﻿#pragma once
#include "VLibuv.h"
#include "VTcpServer.h"
#include "VThread.h"
#include "VWrite.h"
#include "VLogger.h"

VTcpServer tcpServer(1,1224,50,512,1024);
std::string getTestData =
    "HTTP/1.1 200 OK\r\nContent-Type: text/html; "
    "charset=utf-8\r\nContent-Length: 123\r\nConnection: "
    "keep-alive\r\n\r\n<!DOCTYPE html><html><head><title>Sample "
    "Response</title></head><body><h1>Hello, World!</h1></body></html>";

std::string getTestTime1 =
"HTTP/1.1 200 OK\r\nContent-Type: text/html; "
"charset=utf-8\r\nContent-Length: 123\r\nConnection: "
"keep-alive\r\n\r\n<!DOCTYPE html><html><head><title>Sample "
"Response</title></head><body><h1>DataTime:";

std::string getTestTime2 = "</h1></body></html>";

std::string getJson =
    "HTTP/1.1 200 OK\r\nContent-Type: application/json; "
    "charset=utf-8\r\nContent-Length: 123\r\nConnection: "
    "keep-alive\r\n\r\n{\"message\": \"Hello, World!\"}";

const char baiduRecv[] = { 0x48,0x54,0x54,0x50,0x2F,0x31,0x2E,0x31,0x20,0x32,0x30,0x30,0x20,0x4F,0x4B,0x0D,0x0A,0x41,0x63,0x63,0x65,0x70,0x74,0x2D,0x52,0x61,0x6E,0x67,0x65,0x73,0x3A,0x20,0x62,0x79,0x74,0x65,0x73,0x0D,0x0A,0x43,0x61,0x63,0x68,0x65,0x2D,0x43,0x6F,0x6E,0x74,0x72,0x6F,0x6C,0x3A,0x20,0x6E,0x6F,0x2D,0x63,0x61,0x63,0x68,0x65,0x0D,0x0A,0x43,0x6F,0x6E,0x6E,0x65,0x63,0x74,0x69,0x6F,0x6E,0x3A,0x20,0x6B,0x65,0x65,0x70,0x2D,0x61,0x6C,0x69,0x76,0x65,0x0D,0x0A,0x43,0x6F,0x6E,0x74,0x65,0x6E,0x74,0x2D,0x4C,0x65,0x6E,0x67,0x74,0x68,0x3A,0x20,0x39,0x35,0x30,0x38,0x0D,0x0A,0x43,0x6F,0x6E,0x74,0x65,0x6E,0x74,0x2D,0x54,0x79,0x70,0x65,0x3A,0x20,0x74,0x65,0x78,0x74,0x2F,0x68,0x74,0x6D,0x6C,0x0D,0x0A,0x44,0x61,0x74,0x65,0x3A,0x20,0x46,0x72,0x69,0x2C,0x20,0x31,0x32,0x20,0x41,0x70,0x72,0x20,0x32,0x30,0x32,0x34,0x20,0x32,0x30,0x3A,0x35,0x30,0x3A,0x31,0x34,0x20,0x47,0x4D,0x54,0x0D,0x0A,0x50,0x33,0x70,0x3A,0x20,0x43,0x50,0x3D,0x22,0x20,0x4F,0x54,0x49,0x20,0x44,0x53,0x50,0x20,0x43,0x4F,0x52,0x20,0x49,0x56,0x41,0x20,0x4F,0x55,0x52,0x20,0x49,0x4E,0x44,0x20,0x43,0x4F,0x4D,0x20,0x22,0x0D,0x0A,0x50,0x33,0x70,0x3A,0x20,0x43,0x50,0x3D,0x22,0x20,0x4F,0x54,0x49,0x20,0x44,0x53,0x50,0x20,0x43,0x4F,0x52,0x20,0x49,0x56,0x41,0x20,0x4F,0x55,0x52,0x20,0x49,0x4E,0x44,0x20,0x43,0x4F,0x4D,0x20,0x22,0x0D,0x0A,0x50,0x72,0x61,0x67,0x6D,0x61,0x3A,0x20,0x6E,0x6F,0x2D,0x63,0x61,0x63,0x68,0x65,0x0D,0x0A,0x53,0x65,0x72,0x76,0x65,0x72,0x3A,0x20,0x42,0x57,0x53,0x2F,0x31,0x2E,0x31,0x0D,0x0A,0x53,0x65,0x74,0x2D,0x43,0x6F,0x6F,0x6B,0x69,0x65,0x3A,0x20,0x42,0x41,0x49,0x44,0x55,0x49,0x44,0x3D,0x41,0x34,0x36,0x38,0x37,0x38,0x32,0x31,0x44,0x35,0x44,0x37,0x31,0x34,0x38,0x37,0x32,0x42,0x38,0x44,0x30,0x37,0x33,0x42,0x36,0x46,0x37,0x38,0x38,0x37,0x42,0x32,0x3A,0x46,0x47,0x3D,0x31,0x3B,0x20,0x65,0x78,0x70,0x69,0x72,0x65,0x73,0x3D,0x54,0x68,0x75,0x2C,0x20,0x33,0x31,0x2D,0x44,0x65,0x63,0x2D,0x33,0x37,0x20,0x32,0x33,0x3A,0x35,0x35,0x3A,0x35,0x35,0x20,0x47,0x4D,0x54,0x3B,0x20,0x6D,0x61,0x78,0x2D,0x61,0x67,0x65,0x3D,0x32,0x31,0x34,0x37,0x34,0x38,0x33,0x36,0x34,0x37,0x3B,0x20,0x70,0x61,0x74,0x68,0x3D,0x2F,0x3B,0x20,0x64,0x6F,0x6D,0x61,0x69,0x6E,0x3D,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x0D,0x0A,0x53,0x65,0x74,0x2D,0x43,0x6F,0x6F,0x6B,0x69,0x65,0x3A,0x20,0x42,0x49,0x44,0x55,0x50,0x53,0x49,0x44,0x3D,0x41,0x34,0x36,0x38,0x37,0x38,0x32,0x31,0x44,0x35,0x44,0x37,0x31,0x34,0x38,0x37,0x32,0x42,0x38,0x44,0x30,0x37,0x33,0x42,0x36,0x46,0x37,0x38,0x38,0x37,0x42,0x32,0x3B,0x20,0x65,0x78,0x70,0x69,0x72,0x65,0x73,0x3D,0x54,0x68,0x75,0x2C,0x20,0x33,0x31,0x2D,0x44,0x65,0x63,0x2D,0x33,0x37,0x20,0x32,0x33,0x3A,0x35,0x35,0x3A,0x35,0x35,0x20,0x47,0x4D,0x54,0x3B,0x20,0x6D,0x61,0x78,0x2D,0x61,0x67,0x65,0x3D,0x32,0x31,0x34,0x37,0x34,0x38,0x33,0x36,0x34,0x37,0x3B,0x20,0x70,0x61,0x74,0x68,0x3D,0x2F,0x3B,0x20,0x64,0x6F,0x6D,0x61,0x69,0x6E,0x3D,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x0D,0x0A,0x53,0x65,0x74,0x2D,0x43,0x6F,0x6F,0x6B,0x69,0x65,0x3A,0x20,0x50,0x53,0x54,0x4D,0x3D,0x31,0x37,0x31,0x32,0x39,0x35,0x35,0x30,0x31,0x34,0x3B,0x20,0x65,0x78,0x70,0x69,0x72,0x65,0x73,0x3D,0x54,0x68,0x75,0x2C,0x20,0x33,0x31,0x2D,0x44,0x65,0x63,0x2D,0x33,0x37,0x20,0x32,0x33,0x3A,0x35,0x35,0x3A,0x35,0x35,0x20,0x47,0x4D,0x54,0x3B,0x20,0x6D,0x61,0x78,0x2D,0x61,0x67,0x65,0x3D,0x32,0x31,0x34,0x37,0x34,0x38,0x33,0x36,0x34,0x37,0x3B,0x20,0x70,0x61,0x74,0x68,0x3D,0x2F,0x3B,0x20,0x64,0x6F,0x6D,0x61,0x69,0x6E,0x3D,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x0D,0x0A,0x53,0x65,0x74,0x2D,0x43,0x6F,0x6F,0x6B,0x69,0x65,0x3A,0x20,0x42,0x41,0x49,0x44,0x55,0x49,0x44,0x3D,0x41,0x34,0x36,0x38,0x37,0x38,0x32,0x31,0x44,0x35,0x44,0x37,0x31,0x34,0x38,0x37,0x46,0x45,0x41,0x45,0x44,0x39,0x44,0x45,0x41,0x31,0x42,0x44,0x30,0x38,0x44,0x37,0x3A,0x46,0x47,0x3D,0x31,0x3B,0x20,0x6D,0x61,0x78,0x2D,0x61,0x67,0x65,0x3D,0x33,0x31,0x35,0x33,0x36,0x30,0x30,0x30,0x3B,0x20,0x65,0x78,0x70,0x69,0x72,0x65,0x73,0x3D,0x53,0x61,0x74,0x2C,0x20,0x31,0x32,0x2D,0x41,0x70,0x72,0x2D,0x32,0x35,0x20,0x32,0x30,0x3A,0x35,0x30,0x3A,0x31,0x34,0x20,0x47,0x4D,0x54,0x3B,0x20,0x64,0x6F,0x6D,0x61,0x69,0x6E,0x3D,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x3B,0x20,0x70,0x61,0x74,0x68,0x3D,0x2F,0x3B,0x20,0x76,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x31,0x3B,0x20,0x63,0x6F,0x6D,0x6D,0x65,0x6E,0x74,0x3D,0x62,0x64,0x0D,0x0A,0x54,0x72,0x61,0x63,0x65,0x69,0x64,0x3A,0x20,0x31,0x37,0x31,0x32,0x39,0x35,0x35,0x30,0x31,0x34,0x32,0x33,0x38,0x36,0x33,0x35,0x31,0x31,0x31,0x34,0x39,0x32,0x37,0x31,0x34,0x30,0x34,0x30,0x39,0x31,0x37,0x36,0x31,0x31,0x30,0x37,0x39,0x31,0x36,0x0D,0x0A,0x56,0x61,0x72,0x79,0x3A,0x20,0x41,0x63,0x63,0x65,0x70,0x74,0x2D,0x45,0x6E,0x63,0x6F,0x64,0x69,0x6E,0x67,0x0D,0x0A,0x58,0x2D,0x55,0x61,0x2D,0x43,0x6F,0x6D,0x70,0x61,0x74,0x69,0x62,0x6C,0x65,0x3A,0x20,0x49,0x45,0x3D,0x45,0x64,0x67,0x65,0x2C,0x63,0x68,0x72,0x6F,0x6D,0x65,0x3D,0x31,0x0D,0x0A,0x58,0x2D,0x58,0x73,0x73,0x2D,0x50,0x72,0x6F,0x74,0x65,0x63,0x74,0x69,0x6F,0x6E,0x3A,0x20,0x31,0x3B,0x6D,0x6F,0x64,0x65,0x3D,0x62,0x6C,0x6F,0x63,0x6B,0x0D,0x0A,0x0D,0x0A,0x3C,0x21,0x44,0x4F,0x43,0x54,0x59,0x50,0x45,0x20,0x68,0x74,0x6D,0x6C,0x3E,0x3C,0x68,0x74,0x6D,0x6C,0x3E,0x3C,0x68,0x65,0x61,0x64,0x3E,0x3C,0x6D,0x65,0x74,0x61,0x20,0x68,0x74,0x74,0x70,0x2D,0x65,0x71,0x75,0x69,0x76,0x3D,0x22,0x43,0x6F,0x6E,0x74,0x65,0x6E,0x74,0x2D,0x54,0x79,0x70,0x65,0x22,0x20,0x63,0x6F,0x6E,0x74,0x65,0x6E,0x74,0x3D,0x22,0x74,0x65,0x78,0x74,0x2F,0x68,0x74,0x6D,0x6C,0x3B,0x20,0x63,0x68,0x61,0x72,0x73,0x65,0x74,0x3D,0x55,0x54,0x46,0x2D,0x38,0x22,0x3E,0x3C,0x6D,0x65,0x74,0x61,0x20,0x68,0x74,0x74,0x70,0x2D,0x65,0x71,0x75,0x69,0x76,0x3D,0x22,0x58,0x2D,0x55,0x41,0x2D,0x43,0x6F,0x6D,0x70,0x61,0x74,0x69,0x62,0x6C,0x65,0x22,0x20,0x63,0x6F,0x6E,0x74,0x65,0x6E,0x74,0x3D,0x22,0x49,0x45,0x3D,0x65,0x64,0x67,0x65,0x2C,0x63,0x68,0x72,0x6F,0x6D,0x65,0x3D,0x31,0x22,0x3E,0x3C,0x6D,0x65,0x74,0x61,0x20,0x63,0x6F,0x6E,0x74,0x65,0x6E,0x74,0x3D,0x22,0x61,0x6C,0x77,0x61,0x79,0x73,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x72,0x65,0x66,0x65,0x72,0x72,0x65,0x72,0x22,0x3E,0x3C,0x6D,0x65,0x74,0x61,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x64,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6F,0x6E,0x22,0x20,0x63,0x6F,0x6E,0x74,0x65,0x6E,0x74,0x3D,0x22,0xE5,0x85,0xA8,0xE7,0x90,0x83,0xE9,0xA2,0x86,0xE5,0x85,0x88,0xE7,0x9A,0x84,0xE4,0xB8,0xAD,0xE6,0x96,0x87,0xE6,0x90,0x9C,0xE7,0xB4,0xA2,0xE5,0xBC,0x95,0xE6,0x93,0x8E,0xE3,0x80,0x81,0xE8,0x87,0xB4,0xE5,0x8A,0x9B,0xE4,0xBA,0x8E,0xE8,0xAE,0xA9,0xE7,0xBD,0x91,0xE6,0xB0,0x91,0xE6,0x9B,0xB4,0xE4,0xBE,0xBF,0xE6,0x8D,0xB7,0xE5,0x9C,0xB0,0xE8,0x8E,0xB7,0xE5,0x8F,0x96,0xE4,0xBF,0xA1,0xE6,0x81,0xAF,0xEF,0xBC,0x8C,0xE6,0x89,0xBE,0xE5,0x88,0xB0,0xE6,0x89,0x80,0xE6,0xB1,0x82,0xE3,0x80,0x82,0xE7,0x99,0xBE,0xE5,0xBA,0xA6,0xE8,0xB6,0x85,0xE8,0xBF,0x87,0xE5,0x8D,0x83,0xE4,0xBA,0xBF,0xE7,0x9A,0x84,0xE4,0xB8,0xAD,0xE6,0x96,0x87,0xE7,0xBD,0x91,0xE9,0xA1,0xB5,0xE6,0x95,0xB0,0xE6,0x8D,0xAE,0xE5,0xBA,0x93,0xEF,0xBC,0x8C,0xE5,0x8F,0xAF,0xE4,0xBB,0xA5,0xE7,0x9E,0xAC,0xE9,0x97,0xB4,0xE6,0x89,0xBE,0xE5,0x88,0xB0,0xE7,0x9B,0xB8,0xE5,0x85,0xB3,0xE7,0x9A,0x84,0xE6,0x90,0x9C,0xE7,0xB4,0xA2,0xE7,0xBB,0x93,0xE6,0x9E,0x9C,0xE3,0x80,0x82,0x22,0x3E,0x3C,0x6C,0x69,0x6E,0x6B,0x20,0x72,0x65,0x6C,0x3D,0x22,0x73,0x68,0x6F,0x72,0x74,0x63,0x75,0x74,0x20,0x69,0x63,0x6F,0x6E,0x22,0x20,0x68,0x72,0x65,0x66,0x3D,0x22,0x2F,0x2F,0x77,0x77,0x77,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x2F,0x66,0x61,0x76,0x69,0x63,0x6F,0x6E,0x2E,0x69,0x63,0x6F,0x22,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x69,0x6D,0x61,0x67,0x65,0x2F,0x78,0x2D,0x69,0x63,0x6F,0x6E,0x22,0x3E,0x3C,0x6C,0x69,0x6E,0x6B,0x20,0x72,0x65,0x6C,0x3D,0x22,0x73,0x65,0x61,0x72,0x63,0x68,0x22,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x61,0x70,0x70,0x6C,0x69,0x63,0x61,0x74,0x69,0x6F,0x6E,0x2F,0x6F,0x70,0x65,0x6E,0x73,0x65,0x61,0x72,0x63,0x68,0x64,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6F,0x6E,0x2B,0x78,0x6D,0x6C,0x22,0x20,0x68,0x72,0x65,0x66,0x3D,0x22,0x2F,0x2F,0x77,0x77,0x77,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x2F,0x63,0x6F,0x6E,0x74,0x65,0x6E,0x74,0x2D,0x73,0x65,0x61,0x72,0x63,0x68,0x2E,0x78,0x6D,0x6C,0x22,0x20,0x74,0x69,0x74,0x6C,0x65,0x3D,0x22,0xE7,0x99,0xBE,0xE5,0xBA,0xA6,0xE6,0x90,0x9C,0xE7,0xB4,0xA2,0x22,0x3E,0x3C,0x74,0x69,0x74,0x6C,0x65,0x3E,0xE7,0x99,0xBE,0xE5,0xBA,0xA6,0xE4,0xB8,0x80,0xE4,0xB8,0x8B,0xEF,0xBC,0x8C,0xE4,0xBD,0xA0,0xE5,0xB0,0xB1,0xE7,0x9F,0xA5,0xE9,0x81,0x93,0x3C,0x2F,0x74,0x69,0x74,0x6C,0x65,0x3E,0x3C,0x73,0x74,0x79,0x6C,0x65,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x74,0x65,0x78,0x74,0x2F,0x63,0x73,0x73,0x22,0x3E,0x62,0x6F,0x64,0x79,0x7B,0x6D,0x61,0x72,0x67,0x69,0x6E,0x3A,0x30,0x3B,0x70,0x61,0x64,0x64,0x69,0x6E,0x67,0x3A,0x30,0x3B,0x74,0x65,0x78,0x74,0x2D,0x61,0x6C,0x69,0x67,0x6E,0x3A,0x63,0x65,0x6E,0x74,0x65,0x72,0x3B,0x62,0x61,0x63,0x6B,0x67,0x72,0x6F,0x75,0x6E,0x64,0x3A,0x23,0x66,0x66,0x66,0x3B,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x31,0x30,0x30,0x25,0x7D,0x68,0x74,0x6D,0x6C,0x7B,0x6F,0x76,0x65,0x72,0x66,0x6C,0x6F,0x77,0x2D,0x79,0x3A,0x61,0x75,0x74,0x6F,0x3B,0x63,0x6F,0x6C,0x6F,0x72,0x3A,0x23,0x30,0x30,0x30,0x3B,0x6F,0x76,0x65,0x72,0x66,0x6C,0x6F,0x77,0x3A,0x2D,0x6D,0x6F,0x7A,0x2D,0x73,0x63,0x72,0x6F,0x6C,0x6C,0x62,0x61,0x72,0x73,0x3B,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x31,0x30,0x30,0x25,0x7D,0x62,0x6F,0x64,0x79,0x2C,0x69,0x6E,0x70,0x75,0x74,0x7B,0x66,0x6F,0x6E,0x74,0x2D,0x73,0x69,0x7A,0x65,0x3A,0x31,0x32,0x70,0x78,0x3B,0x66,0x6F,0x6E,0x74,0x2D,0x66,0x61,0x6D,0x69,0x6C,0x79,0x3A,0x22,0x50,0x69,0x6E,0x67,0x46,0x61,0x6E,0x67,0x20,0x53,0x43,0x22,0x2C,0x41,0x72,0x69,0x61,0x6C,0x2C,0x22,0x4D,0x69,0x63,0x72,0x6F,0x73,0x6F,0x66,0x74,0x20,0x59,0x61,0x48,0x65,0x69,0x22,0x2C,0x73,0x61,0x6E,0x73,0x2D,0x73,0x65,0x72,0x69,0x66,0x7D,0x61,0x7B,0x74,0x65,0x78,0x74,0x2D,0x64,0x65,0x63,0x6F,0x72,0x61,0x74,0x69,0x6F,0x6E,0x3A,0x6E,0x6F,0x6E,0x65,0x7D,0x61,0x3A,0x68,0x6F,0x76,0x65,0x72,0x7B,0x74,0x65,0x78,0x74,0x2D,0x64,0x65,0x63,0x6F,0x72,0x61,0x74,0x69,0x6F,0x6E,0x3A,0x75,0x6E,0x64,0x65,0x72,0x6C,0x69,0x6E,0x65,0x7D,0x69,0x6D,0x67,0x7B,0x62,0x6F,0x72,0x64,0x65,0x72,0x3A,0x30,0x3B,0x2D,0x6D,0x73,0x2D,0x69,0x6E,0x74,0x65,0x72,0x70,0x6F,0x6C,0x61,0x74,0x69,0x6F,0x6E,0x2D,0x6D,0x6F,0x64,0x65,0x3A,0x62,0x69,0x63,0x75,0x62,0x69,0x63,0x7D,0x69,0x6E,0x70,0x75,0x74,0x7B,0x66,0x6F,0x6E,0x74,0x2D,0x73,0x69,0x7A,0x65,0x3A,0x31,0x30,0x30,0x25,0x3B,0x62,0x6F,0x72,0x64,0x65,0x72,0x3A,0x30,0x7D,0x62,0x6F,0x64,0x79,0x2C,0x66,0x6F,0x72,0x6D,0x7B,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x3A,0x72,0x65,0x6C,0x61,0x74,0x69,0x76,0x65,0x3B,0x7A,0x2D,0x69,0x6E,0x64,0x65,0x78,0x3A,0x30,0x7D,0x23,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x7B,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x31,0x30,0x30,0x25,0x7D,0x23,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x2E,0x73,0x2D,0x70,0x73,0x2D,0x69,0x73,0x6C,0x69,0x74,0x65,0x7B,0x70,0x61,0x64,0x64,0x69,0x6E,0x67,0x2D,0x62,0x6F,0x74,0x74,0x6F,0x6D,0x3A,0x33,0x37,0x30,0x70,0x78,0x7D,0x23,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x2E,0x73,0x2D,0x70,0x73,0x2D,0x69,0x73,0x6C,0x69,0x74,0x65,0x20,0x2E,0x73,0x5F,0x66,0x6F,0x72,0x6D,0x7B,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x3A,0x72,0x65,0x6C,0x61,0x74,0x69,0x76,0x65,0x3B,0x7A,0x2D,0x69,0x6E,0x64,0x65,0x78,0x3A,0x31,0x7D,0x23,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x2E,0x73,0x2D,0x70,0x73,0x2D,0x69,0x73,0x6C,0x69,0x74,0x65,0x20,0x2E,0x66,0x6D,0x7B,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x3A,0x61,0x62,0x73,0x6F,0x6C,0x75,0x74,0x65,0x3B,0x62,0x6F,0x74,0x74,0x6F,0x6D,0x3A,0x30,0x7D,0x23,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x2E,0x73,0x2D,0x70,0x73,0x2D,0x69,0x73,0x6C,0x69,0x74,0x65,0x20,0x2E,0x73,0x2D,0x70,0x2D,0x74,0x6F,0x70,0x7B,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x3A,0x61,0x62,0x73,0x6F,0x6C,0x75,0x74,0x65,0x3B,0x62,0x6F,0x74,0x74,0x6F,0x6D,0x3A,0x34,0x30,0x70,0x78,0x3B,0x77,0x69,0x64,0x74,0x68,0x3A,0x31,0x30,0x30,0x25,0x3B,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x31,0x38,0x31,0x70,0x78,0x7D,0x23,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x2E,0x73,0x2D,0x70,0x73,0x2D,0x69,0x73,0x6C,0x69,0x74,0x65,0x20,0x23,0x73,0x5F,0x6C,0x67,0x5F,0x69,0x6D,0x67,0x7B,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x3A,0x73,0x74,0x61,0x74,0x69,0x63,0x3B,0x6D,0x61,0x72,0x67,0x69,0x6E,0x3A,0x33,0x33,0x70,0x78,0x20,0x61,0x75,0x74,0x6F,0x20,0x30,0x20,0x61,0x75,0x74,0x6F,0x3B,0x6C,0x65,0x66,0x74,0x3A,0x35,0x30,0x25,0x7D,0x23,0x66,0x6F,0x72,0x6D,0x7B,0x7A,0x2D,0x69,0x6E,0x64,0x65,0x78,0x3A,0x31,0x7D,0x2E,0x73,0x5F,0x66,0x6F,0x72,0x6D,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x7B,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x31,0x30,0x30,0x25,0x7D,0x23,0x6C,0x68,0x7B,0x6D,0x61,0x72,0x67,0x69,0x6E,0x3A,0x31,0x36,0x70,0x78,0x20,0x30,0x20,0x35,0x70,0x78,0x3B,0x77,0x6F,0x72,0x64,0x2D,0x73,0x70,0x61,0x63,0x69,0x6E,0x67,0x3A,0x33,0x70,0x78,0x7D,0x2E,0x63,0x2D,0x66,0x6F,0x6E,0x74,0x2D,0x6E,0x6F,0x72,0x6D,0x61,0x6C,0x7B,0x66,0x6F,0x6E,0x74,0x3A,0x31,0x33,0x70,0x78,0x2F,0x32,0x33,0x70,0x78,0x20,0x41,0x72,0x69,0x61,0x6C,0x2C,0x73,0x61,0x6E,0x73,0x2D,0x73,0x65,0x72,0x69,0x66,0x7D,0x2E,0x63,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x2D,0x74,0x7B,0x63,0x6F,0x6C,0x6F,0x72,0x3A,0x23,0x32,0x32,0x32,0x7D,0x2E,0x63,0x2D,0x62,0x74,0x6E,0x2C,0x2E,0x63,0x2D,0x62,0x74,0x6E,0x3A,0x76,0x69,0x73,0x69,0x74,0x65,0x64,0x7B,0x63,0x6F,0x6C,0x6F,0x72,0x3A,0x23,0x33,0x33,0x33,0x21,0x69,0x6D,0x70,0x6F,0x72,0x74,0x61,0x6E,0x74,0x7D,0x2E,0x63,0x2D,0x62,0x74,0x6E,0x7B,0x64,0x69,0x73,0x70,0x6C,0x61,0x79,0x3A,0x69,0x6E,0x6C,0x69,0x6E,0x65,0x2D,0x62,0x6C,0x6F,0x63,0x6B,0x3B,0x6F,0x76,0x65,0x72,0x66,0x6C,0x6F,0x77,0x3A,0x68,0x69,0x64,0x64,0x65,0x6E,0x3B,0x66,0x6F,0x6E,0x74,0x2D,0x66,0x61,0x6D,0x69,0x6C,0x79,0x3A,0x69,0x6E,0x68,0x65,0x72,0x69,0x74,0x3B,0x66,0x6F,0x6E,0x74,0x2D,0x77,0x65,0x69,0x67,0x68,0x74,0x3A,0x34,0x30,0x30,0x3B,0x74,0x65,0x78,0x74,0x2D,0x61,0x6C,0x69,0x67,0x6E,0x3A,0x63,0x65,0x6E,0x74,0x65,0x72,0x3B,0x76,0x65,0x72,0x74,0x69,0x63,0x61,0x6C,0x2D,0x61,0x6C,0x69,0x67,0x6E,0x3A,0x6D,0x69,0x64,0x64,0x6C,0x65,0x3B,0x6F,0x75,0x74,0x6C,0x69,0x6E,0x65,0x3A,0x30,0x3B,0x62,0x6F,0x72,0x64,0x65,0x72,0x3A,0x30,0x3B,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x33,0x30,0x70,0x78,0x3B,0x77,0x69,0x64,0x74,0x68,0x3A,0x38,0x30,0x70,0x78,0x3B,0x6C,0x69,0x6E,0x65,0x2D,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x33,0x30,0x70,0x78,0x3B,0x66,0x6F,0x6E,0x74,0x2D,0x73,0x69,0x7A,0x65,0x3A,0x31,0x33,0x70,0x78,0x3B,0x62,0x6F,0x72,0x64,0x65,0x72,0x2D,0x72,0x61,0x64,0x69,0x75,0x73,0x3A,0x36,0x70,0x78,0x3B,0x70,0x61,0x64,0x64,0x69,0x6E,0x67,0x3A,0x30,0x3B,0x62,0x61,0x63,0x6B,0x67,0x72,0x6F,0x75,0x6E,0x64,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x3A,0x23,0x66,0x35,0x66,0x35,0x66,0x36,0x3B,0x63,0x75,0x72,0x73,0x6F,0x72,0x3A,0x70,0x6F,0x69,0x6E,0x74,0x65,0x72,0x7D,0x2E,0x63,0x2D,0x62,0x74,0x6E,0x3A,0x68,0x6F,0x76,0x65,0x72,0x7B,0x62,0x61,0x63,0x6B,0x67,0x72,0x6F,0x75,0x6E,0x64,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x3A,0x23,0x33,0x31,0x35,0x65,0x66,0x62,0x3B,0x63,0x6F,0x6C,0x6F,0x72,0x3A,0x23,0x66,0x66,0x66,0x21,0x69,0x6D,0x70,0x6F,0x72,0x74,0x61,0x6E,0x74,0x7D,0x61,0x2E,0x63,0x2D,0x62,0x74,0x6E,0x7B,0x74,0x65,0x78,0x74,0x2D,0x64,0x65,0x63,0x6F,0x72,0x61,0x74,0x69,0x6F,0x6E,0x3A,0x6E,0x6F,0x6E,0x65,0x7D,0x2E,0x63,0x2D,0x62,0x74,0x6E,0x2D,0x6D,0x69,0x6E,0x69,0x7B,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x32,0x34,0x70,0x78,0x3B,0x77,0x69,0x64,0x74,0x68,0x3A,0x34,0x38,0x70,0x78,0x3B,0x6C,0x69,0x6E,0x65,0x2D,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x32,0x34,0x70,0x78,0x7D,0x2E,0x63,0x2D,0x62,0x74,0x6E,0x2D,0x70,0x72,0x69,0x6D,0x61,0x72,0x79,0x2C,0x2E,0x63,0x2D,0x62,0x74,0x6E,0x2D,0x70,0x72,0x69,0x6D,0x61,0x72,0x79,0x3A,0x76,0x69,0x73,0x69,0x74,0x65,0x64,0x7B,0x63,0x6F,0x6C,0x6F,0x72,0x3A,0x23,0x66,0x66,0x66,0x21,0x69,0x6D,0x70,0x6F,0x72,0x74,0x61,0x6E,0x74,0x7D,0x2E,0x63,0x2D,0x62,0x74,0x6E,0x2D,0x70,0x72,0x69,0x6D,0x61,0x72,0x79,0x7B,0x62,0x61,0x63,0x6B,0x67,0x72,0x6F,0x75,0x6E,0x64,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x3A,0x23,0x34,0x65,0x36,0x65,0x66,0x32,0x7D,0x2E,0x63,0x2D,0x62,0x74,0x6E,0x2D,0x70,0x72,0x69,0x6D,0x61,0x72,0x79,0x3A,0x68,0x6F,0x76,0x65,0x72,0x7B,0x62,0x61,0x63,0x6B,0x67,0x72,0x6F,0x75,0x6E,0x64,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x3A,0x23,0x33,0x31,0x35,0x65,0x66,0x62,0x7D,0x61,0x3A,0x61,0x63,0x74,0x69,0x76,0x65,0x7B,0x63,0x6F,0x6C,0x6F,0x72,0x3A,0x23,0x66,0x36,0x30,0x7D,0x23,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x7B,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x3A,0x72,0x65,0x6C,0x61,0x74,0x69,0x76,0x65,0x3B,0x6D,0x69,0x6E,0x2D,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x31,0x30,0x30,0x25,0x7D,0x23,0x68,0x65,0x61,0x64,0x7B,0x70,0x61,0x64,0x64,0x69,0x6E,0x67,0x2D,0x62,0x6F,0x74,0x74,0x6F,0x6D,0x3A,0x31,0x30,0x30,0x70,0x78,0x3B,0x74,0x65,0x78,0x74,0x2D,0x61,0x6C,0x69,0x67,0x6E,0x3A,0x63,0x65,0x6E,0x74,0x65,0x72,0x7D,0x23,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x7B,0x6D,0x69,0x6E,0x2D,0x77,0x69,0x64,0x74,0x68,0x3A,0x31,0x32,0x35,0x30,0x70,0x78,0x3B,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x31,0x30,0x30,0x25,0x3B,0x6D,0x69,0x6E,0x2D,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x36,0x30,0x30,0x70,0x78,0x7D,0x23,0x68,0x65,0x61,0x64,0x7B,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x3A,0x72,0x65,0x6C,0x61,0x74,0x69,0x76,0x65,0x3B,0x70,0x61,0x64,0x64,0x69,0x6E,0x67,0x2D,0x62,0x6F,0x74,0x74,0x6F,0x6D,0x3A,0x30,0x3B,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x31,0x30,0x30,0x25,0x3B,0x6D,0x69,0x6E,0x2D,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x36,0x30,0x30,0x70,0x78,0x7D,0x2E,0x73,0x5F,0x66,0x6F,0x72,0x6D,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x7B,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x31,0x30,0x30,0x25,0x7D,0x2E,0x71,0x75,0x69,0x63,0x6B,0x64,0x65,0x6C,0x65,0x74,0x65,0x2D,0x77,0x72,0x61,0x70,0x7B,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x3A,0x72,0x65,0x6C,0x61,0x74,0x69,0x76,0x65,0x7D,0x2E,0x74,0x6F,0x6F,0x6C,0x73,0x7B,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x3A,0x61,0x62,0x73,0x6F,0x6C,0x75,0x74,0x65,0x3B,0x72,0x69,0x67,0x68,0x74,0x3A,0x2D,0x37,0x35,0x70,0x78,0x7D,0x2E,0x73,0x2D,0x69,0x73,0x69,0x6E,0x64,0x65,0x78,0x2D,0x77,0x72,0x61,0x70,0x7B,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x3A,0x72,0x65,0x6C,0x61,0x74,0x69,0x76,0x65,0x7D,0x23,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x2E,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x7B,0x77,0x69,0x64,0x74,0x68,0x3A,0x61,0x75,0x74,0x6F,0x7D,0x23,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x7B,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x3A,0x72,0x65,0x6C,0x61,0x74,0x69,0x76,0x65,0x3B,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x34,0x30,0x25,0x3B,0x6D,0x69,0x6E,0x2D,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x33,0x31,0x34,0x70,0x78,0x3B,0x6D,0x61,0x78,0x2D,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x35,0x31,0x30,0x70,0x78,0x3B,0x77,0x69,0x64,0x74,0x68,0x3A,0x31,0x30,0x30,0x30,0x70,0x78,0x3B,0x6D,0x61,0x72,0x67,0x69,0x6E,0x3A,0x30,0x20,0x61,0x75,0x74,0x6F,0x7D,0x23,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x20,0x2E,0x73,0x2D,0x70,0x2D,0x74,0x6F,0x70,0x7B,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x36,0x30,0x25,0x3B,0x6D,0x69,0x6E,0x2D,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x31,0x38,0x35,0x70,0x78,0x3B,0x6D,0x61,0x78,0x2D,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x33,0x31,0x30,0x70,0x78,0x3B,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x3A,0x72,0x65,0x6C,0x61,0x74,0x69,0x76,0x65,0x3B,0x7A,0x2D,0x69,0x6E,0x64,0x65,0x78,0x3A,0x30,0x3B,0x74,0x65,0x78,0x74,0x2D,0x61,0x6C,0x69,0x67,0x6E,0x3A,0x63,0x65,0x6E,0x74,0x65,0x72,0x7D,0x23,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x20,0x69,0x6E,0x70,0x75,0x74,0x7B,0x6F,0x75,0x74,0x6C,0x69,0x6E,0x65,0x3A,0x30,0x3B,0x2D,0x77,0x65,0x62,0x6B,0x69,0x74,0x2D,0x61,0x70,0x70,0x65,0x61,0x72,0x61,0x6E,0x63,0x65,0x3A,0x6E,0x6F,0x6E,0x65,0x7D,0x23,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x20,0x2E,0x73,0x5F,0x62,0x74,0x6E,0x5F,0x77,0x72,0x2C,0x23,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x20,0x2E,0x73,0x5F,0x69,0x70,0x74,0x5F,0x77,0x72,0x7B,0x64,0x69,0x73,0x70,0x6C,0x61,0x79,0x3A,0x69,0x6E,0x6C,0x69,0x6E,0x65,0x2D,0x62,0x6C,0x6F,0x63,0x6B,0x3B,0x7A,0x6F,0x6F,0x6D,0x3A,0x31,0x3B,0x62,0x61,0x63,0x6B,0x67,0x72,0x6F,0x75,0x6E,0x64,0x3A,0x30,0x20,0x30,0x3B,0x76,0x65,0x72,0x74,0x69,0x63,0x61,0x6C,0x2D,0x61,0x6C,0x69,0x67,0x6E,0x3A,0x74,0x6F,0x70,0x7D,0x23,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x20,0x2E,0x73,0x5F,0x69,0x70,0x74,0x5F,0x77,0x72,0x7B,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x3A,0x72,0x65,0x6C,0x61,0x74,0x69,0x76,0x65,0x3B,0x77,0x69,0x64,0x74,0x68,0x3A,0x35,0x34,0x36,0x70,0x78,0x7D,0x23,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x20,0x2E,0x73,0x5F,0x62,0x74,0x6E,0x5F,0x77,0x72,0x7B,0x77,0x69,0x64,0x74,0x68,0x3A,0x31,0x30,0x38,0x70,0x78,0x3B,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x34,0x34,0x70,0x78,0x3B,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x3A,0x72,0x65,0x6C,0x61,0x74,0x69,0x76,0x65,0x3B,0x7A,0x2D,0x69,0x6E,0x64,0x65,0x78,0x3A,0x32,0x7D,0x23,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x20,0x2E,0x73,0x5F,0x69,0x70,0x74,0x5F,0x77,0x72,0x3A,0x68,0x6F,0x76,0x65,0x72,0x20,0x23,0x6B,0x77,0x7B,0x62,0x6F,0x72,0x64,0x65,0x72,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x3A,0x23,0x61,0x37,0x61,0x61,0x62,0x35,0x7D,0x23,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x20,0x23,0x6B,0x77,0x7B,0x77,0x69,0x64,0x74,0x68,0x3A,0x35,0x31,0x32,0x70,0x78,0x3B,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x31,0x36,0x70,0x78,0x3B,0x70,0x61,0x64,0x64,0x69,0x6E,0x67,0x3A,0x31,0x32,0x70,0x78,0x20,0x31,0x36,0x70,0x78,0x3B,0x66,0x6F,0x6E,0x74,0x2D,0x73,0x69,0x7A,0x65,0x3A,0x31,0x36,0x70,0x78,0x3B,0x6D,0x61,0x72,0x67,0x69,0x6E,0x3A,0x30,0x3B,0x76,0x65,0x72,0x74,0x69,0x63,0x61,0x6C,0x2D,0x61,0x6C,0x69,0x67,0x6E,0x3A,0x74,0x6F,0x70,0x3B,0x6F,0x75,0x74,0x6C,0x69,0x6E,0x65,0x3A,0x30,0x3B,0x62,0x6F,0x78,0x2D,0x73,0x68,0x61,0x64,0x6F,0x77,0x3A,0x6E,0x6F,0x6E,0x65,0x3B,0x62,0x6F,0x72,0x64,0x65,0x72,0x2D,0x72,0x61,0x64,0x69,0x75,0x73,0x3A,0x31,0x30,0x70,0x78,0x20,0x30,0x20,0x30,0x20,0x31,0x30,0x70,0x78,0x3B,0x62,0x6F,0x72,0x64,0x65,0x72,0x3A,0x32,0x70,0x78,0x20,0x73,0x6F,0x6C,0x69,0x64,0x20,0x23,0x63,0x34,0x63,0x37,0x63,0x65,0x3B,0x62,0x61,0x63,0x6B,0x67,0x72,0x6F,0x75,0x6E,0x64,0x3A,0x23,0x66,0x66,0x66,0x3B,0x63,0x6F,0x6C,0x6F,0x72,0x3A,0x23,0x32,0x32,0x32,0x3B,0x6F,0x76,0x65,0x72,0x66,0x6C,0x6F,0x77,0x3A,0x68,0x69,0x64,0x64,0x65,0x6E,0x3B,0x62,0x6F,0x78,0x2D,0x73,0x69,0x7A,0x69,0x6E,0x67,0x3A,0x63,0x6F,0x6E,0x74,0x65,0x6E,0x74,0x2D,0x62,0x6F,0x78,0x7D,0x23,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x20,0x23,0x6B,0x77,0x3A,0x66,0x6F,0x63,0x75,0x73,0x7B,0x62,0x6F,0x72,0x64,0x65,0x72,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x3A,0x23,0x34,0x65,0x36,0x65,0x66,0x32,0x21,0x69,0x6D,0x70,0x6F,0x72,0x74,0x61,0x6E,0x74,0x3B,0x6F,0x70,0x61,0x63,0x69,0x74,0x79,0x3A,0x31,0x7D,0x23,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x20,0x2E,0x73,0x5F,0x66,0x6F,0x72,0x6D,0x7B,0x77,0x69,0x64,0x74,0x68,0x3A,0x36,0x35,0x34,0x70,0x78,0x3B,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x31,0x30,0x30,0x25,0x3B,0x6D,0x61,0x72,0x67,0x69,0x6E,0x3A,0x30,0x20,0x61,0x75,0x74,0x6F,0x3B,0x74,0x65,0x78,0x74,0x2D,0x61,0x6C,0x69,0x67,0x6E,0x3A,0x6C,0x65,0x66,0x74,0x3B,0x7A,0x2D,0x69,0x6E,0x64,0x65,0x78,0x3A,0x31,0x30,0x30,0x7D,0x23,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x20,0x2E,0x73,0x5F,0x62,0x74,0x6E,0x7B,0x63,0x75,0x72,0x73,0x6F,0x72,0x3A,0x70,0x6F,0x69,0x6E,0x74,0x65,0x72,0x3B,0x77,0x69,0x64,0x74,0x68,0x3A,0x31,0x30,0x38,0x70,0x78,0x3B,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x34,0x34,0x70,0x78,0x3B,0x6C,0x69,0x6E,0x65,0x2D,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x34,0x35,0x70,0x78,0x3B,0x70,0x61,0x64,0x64,0x69,0x6E,0x67,0x3A,0x30,0x3B,0x62,0x61,0x63,0x6B,0x67,0x72,0x6F,0x75,0x6E,0x64,0x3A,0x30,0x20,0x30,0x3B,0x62,0x61,0x63,0x6B,0x67,0x72,0x6F,0x75,0x6E,0x64,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x3A,0x23,0x34,0x65,0x36,0x65,0x66,0x32,0x3B,0x62,0x6F,0x72,0x64,0x65,0x72,0x2D,0x72,0x61,0x64,0x69,0x75,0x73,0x3A,0x30,0x20,0x31,0x30,0x70,0x78,0x20,0x31,0x30,0x70,0x78,0x20,0x30,0x3B,0x66,0x6F,0x6E,0x74,0x2D,0x73,0x69,0x7A,0x65,0x3A,0x31,0x37,0x70,0x78,0x3B,0x63,0x6F,0x6C,0x6F,0x72,0x3A,0x23,0x66,0x66,0x66,0x3B,0x62,0x6F,0x78,0x2D,0x73,0x68,0x61,0x64,0x6F,0x77,0x3A,0x6E,0x6F,0x6E,0x65,0x3B,0x66,0x6F,0x6E,0x74,0x2D,0x77,0x65,0x69,0x67,0x68,0x74,0x3A,0x34,0x30,0x30,0x3B,0x62,0x6F,0x72,0x64,0x65,0x72,0x3A,0x6E,0x6F,0x6E,0x65,0x3B,0x6F,0x75,0x74,0x6C,0x69,0x6E,0x65,0x3A,0x30,0x7D,0x23,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x20,0x2E,0x73,0x5F,0x62,0x74,0x6E,0x3A,0x68,0x6F,0x76,0x65,0x72,0x7B,0x62,0x61,0x63,0x6B,0x67,0x72,0x6F,0x75,0x6E,0x64,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x3A,0x23,0x34,0x36,0x36,0x32,0x64,0x39,0x7D,0x23,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x20,0x2E,0x73,0x5F,0x62,0x74,0x6E,0x3A,0x61,0x63,0x74,0x69,0x76,0x65,0x7B,0x62,0x61,0x63,0x6B,0x67,0x72,0x6F,0x75,0x6E,0x64,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x3A,0x23,0x34,0x36,0x36,0x32,0x64,0x39,0x7D,0x23,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x20,0x2E,0x71,0x75,0x69,0x63,0x6B,0x64,0x65,0x6C,0x65,0x74,0x65,0x2D,0x77,0x72,0x61,0x70,0x7B,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x3A,0x72,0x65,0x6C,0x61,0x74,0x69,0x76,0x65,0x7D,0x23,0x73,0x5F,0x74,0x6F,0x70,0x5F,0x77,0x72,0x61,0x70,0x7B,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x3A,0x61,0x62,0x73,0x6F,0x6C,0x75,0x74,0x65,0x3B,0x7A,0x2D,0x69,0x6E,0x64,0x65,0x78,0x3A,0x39,0x39,0x3B,0x6D,0x69,0x6E,0x2D,0x77,0x69,0x64,0x74,0x68,0x3A,0x31,0x30,0x30,0x30,0x70,0x78,0x3B,0x77,0x69,0x64,0x74,0x68,0x3A,0x31,0x30,0x30,0x25,0x7D,0x2E,0x73,0x2D,0x74,0x6F,0x70,0x2D,0x6C,0x65,0x66,0x74,0x7B,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x3A,0x61,0x62,0x73,0x6F,0x6C,0x75,0x74,0x65,0x3B,0x6C,0x65,0x66,0x74,0x3A,0x30,0x3B,0x74,0x6F,0x70,0x3A,0x30,0x3B,0x7A,0x2D,0x69,0x6E,0x64,0x65,0x78,0x3A,0x31,0x30,0x30,0x3B,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x36,0x30,0x70,0x78,0x3B,0x70,0x61,0x64,0x64,0x69,0x6E,0x67,0x2D,0x6C,0x65,0x66,0x74,0x3A,0x32,0x34,0x70,0x78,0x7D,0x2E,0x73,0x2D,0x74,0x6F,0x70,0x2D,0x6C,0x65,0x66,0x74,0x20,0x2E,0x6D,0x6E,0x61,0x76,0x7B,0x6D,0x61,0x72,0x67,0x69,0x6E,0x2D,0x72,0x69,0x67,0x68,0x74,0x3A,0x33,0x31,0x70,0x78,0x3B,0x6D,0x61,0x72,0x67,0x69,0x6E,0x2D,0x74,0x6F,0x70,0x3A,0x31,0x39,0x70,0x78,0x3B,0x64,0x69,0x73,0x70,0x6C,0x61,0x79,0x3A,0x69,0x6E,0x6C,0x69,0x6E,0x65,0x2D,0x62,0x6C,0x6F,0x63,0x6B,0x3B,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x3A,0x72,0x65,0x6C,0x61,0x74,0x69,0x76,0x65,0x7D,0x2E,0x73,0x2D,0x74,0x6F,0x70,0x2D,0x6C,0x65,0x66,0x74,0x20,0x2E,0x6D,0x6E,0x61,0x76,0x3A,0x68,0x6F,0x76,0x65,0x72,0x20,0x2E,0x73,0x2D,0x62,0x72,0x69,0x2C,0x2E,0x73,0x2D,0x74,0x6F,0x70,0x2D,0x6C,0x65,0x66,0x74,0x20,0x61,0x3A,0x68,0x6F,0x76,0x65,0x72,0x7B,0x63,0x6F,0x6C,0x6F,0x72,0x3A,0x23,0x33,0x31,0x35,0x65,0x66,0x62,0x3B,0x74,0x65,0x78,0x74,0x2D,0x64,0x65,0x63,0x6F,0x72,0x61,0x74,0x69,0x6F,0x6E,0x3A,0x6E,0x6F,0x6E,0x65,0x7D,0x2E,0x73,0x2D,0x74,0x6F,0x70,0x2D,0x6C,0x65,0x66,0x74,0x20,0x2E,0x73,0x2D,0x74,0x6F,0x70,0x2D,0x6D,0x6F,0x72,0x65,0x2D,0x62,0x74,0x6E,0x7B,0x70,0x61,0x64,0x64,0x69,0x6E,0x67,0x2D,0x62,0x6F,0x74,0x74,0x6F,0x6D,0x3A,0x31,0x39,0x70,0x78,0x7D,0x2E,0x73,0x2D,0x74,0x6F,0x70,0x2D,0x6C,0x65,0x66,0x74,0x20,0x2E,0x73,0x2D,0x74,0x6F,0x70,0x2D,0x6D,0x6F,0x72,0x65,0x2D,0x62,0x74,0x6E,0x3A,0x68,0x6F,0x76,0x65,0x72,0x20,0x2E,0x73,0x2D,0x74,0x6F,0x70,0x2D,0x6D,0x6F,0x72,0x65,0x7B,0x64,0x69,0x73,0x70,0x6C,0x61,0x79,0x3A,0x62,0x6C,0x6F,0x63,0x6B,0x7D,0x2E,0x73,0x2D,0x74,0x6F,0x70,0x2D,0x72,0x69,0x67,0x68,0x74,0x7B,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x3A,0x61,0x62,0x73,0x6F,0x6C,0x75,0x74,0x65,0x3B,0x72,0x69,0x67,0x68,0x74,0x3A,0x30,0x3B,0x74,0x6F,0x70,0x3A,0x30,0x3B,0x7A,0x2D,0x69,0x6E,0x64,0x65,0x78,0x3A,0x31,0x30,0x30,0x3B,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x36,0x30,0x70,0x78,0x3B,0x70,0x61,0x64,0x64,0x69,0x6E,0x67,0x2D,0x72,0x69,0x67,0x68,0x74,0x3A,0x32,0x34,0x70,0x78,0x7D,0x2E,0x73,0x2D,0x74,0x6F,0x70,0x2D,0x72,0x69,0x67,0x68,0x74,0x20,0x2E,0x73,0x2D,0x74,0x6F,0x70,0x2D,0x72,0x69,0x67,0x68,0x74,0x2D,0x74,0x65,0x78,0x74,0x7B,0x6D,0x61,0x72,0x67,0x69,0x6E,0x2D,0x6C,0x65,0x66,0x74,0x3A,0x33,0x32,0x70,0x78,0x3B,0x6D,0x61,0x72,0x67,0x69,0x6E,0x2D,0x74,0x6F,0x70,0x3A,0x31,0x39,0x70,0x78,0x3B,0x64,0x69,0x73,0x70,0x6C,0x61,0x79,0x3A,0x69,0x6E,0x6C,0x69,0x6E,0x65,0x2D,0x62,0x6C,0x6F,0x63,0x6B,0x3B,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x3A,0x72,0x65,0x6C,0x61,0x74,0x69,0x76,0x65,0x3B,0x76,0x65,0x72,0x74,0x69,0x63,0x61,0x6C,0x2D,0x61,0x6C,0x69,0x67,0x6E,0x3A,0x74,0x6F,0x70,0x3B,0x63,0x75,0x72,0x73,0x6F,0x72,0x3A,0x70,0x6F,0x69,0x6E,0x74,0x65,0x72,0x7D,0x2E,0x73,0x2D,0x74,0x6F,0x70,0x2D,0x72,0x69,0x67,0x68,0x74,0x20,0x2E,0x73,0x2D,0x74,0x6F,0x70,0x2D,0x72,0x69,0x67,0x68,0x74,0x2D,0x74,0x65,0x78,0x74,0x3A,0x68,0x6F,0x76,0x65,0x72,0x7B,0x63,0x6F,0x6C,0x6F,0x72,0x3A,0x23,0x33,0x31,0x35,0x65,0x66,0x62,0x7D,0x2E,0x73,0x2D,0x74,0x6F,0x70,0x2D,0x72,0x69,0x67,0x68,0x74,0x20,0x2E,0x73,0x2D,0x74,0x6F,0x70,0x2D,0x6C,0x6F,0x67,0x69,0x6E,0x2D,0x62,0x74,0x6E,0x7B,0x64,0x69,0x73,0x70,0x6C,0x61,0x79,0x3A,0x69,0x6E,0x6C,0x69,0x6E,0x65,0x2D,0x62,0x6C,0x6F,0x63,0x6B,0x3B,0x6D,0x61,0x72,0x67,0x69,0x6E,0x2D,0x74,0x6F,0x70,0x3A,0x31,0x38,0x70,0x78,0x3B,0x6D,0x61,0x72,0x67,0x69,0x6E,0x2D,0x6C,0x65,0x66,0x74,0x3A,0x33,0x32,0x70,0x78,0x3B,0x66,0x6F,0x6E,0x74,0x2D,0x73,0x69,0x7A,0x65,0x3A,0x31,0x33,0x70,0x78,0x7D,0x2E,0x73,0x2D,0x74,0x6F,0x70,0x2D,0x72,0x69,0x67,0x68,0x74,0x20,0x61,0x3A,0x68,0x6F,0x76,0x65,0x72,0x7B,0x74,0x65,0x78,0x74,0x2D,0x64,0x65,0x63,0x6F,0x72,0x61,0x74,0x69,0x6F,0x6E,0x3A,0x6E,0x6F,0x6E,0x65,0x7D,0x23,0x62,0x6F,0x74,0x74,0x6F,0x6D,0x5F,0x6C,0x61,0x79,0x65,0x72,0x7B,0x77,0x69,0x64,0x74,0x68,0x3A,0x31,0x30,0x30,0x25,0x3B,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x3A,0x66,0x69,0x78,0x65,0x64,0x3B,0x7A,0x2D,0x69,0x6E,0x64,0x65,0x78,0x3A,0x33,0x30,0x32,0x3B,0x62,0x6F,0x74,0x74,0x6F,0x6D,0x3A,0x30,0x3B,0x6C,0x65,0x66,0x74,0x3A,0x30,0x3B,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x33,0x39,0x70,0x78,0x3B,0x70,0x61,0x64,0x64,0x69,0x6E,0x67,0x2D,0x74,0x6F,0x70,0x3A,0x31,0x70,0x78,0x3B,0x6F,0x76,0x65,0x72,0x66,0x6C,0x6F,0x77,0x3A,0x68,0x69,0x64,0x64,0x65,0x6E,0x3B,0x7A,0x6F,0x6F,0x6D,0x3A,0x31,0x3B,0x6D,0x61,0x72,0x67,0x69,0x6E,0x3A,0x30,0x3B,0x6C,0x69,0x6E,0x65,0x2D,0x68,0x65,0x69,0x67,0x68,0x74,0x3A,0x33,0x39,0x70,0x78,0x3B,0x62,0x61,0x63,0x6B,0x67,0x72,0x6F,0x75,0x6E,0x64,0x3A,0x23,0x66,0x66,0x66,0x7D,0x23,0x62,0x6F,0x74,0x74,0x6F,0x6D,0x5F,0x6C,0x61,0x79,0x65,0x72,0x20,0x2E,0x6C,0x68,0x7B,0x64,0x69,0x73,0x70,0x6C,0x61,0x79,0x3A,0x69,0x6E,0x6C,0x69,0x6E,0x65,0x3B,0x6D,0x61,0x72,0x67,0x69,0x6E,0x2D,0x72,0x69,0x67,0x68,0x74,0x3A,0x32,0x30,0x70,0x78,0x7D,0x23,0x62,0x6F,0x74,0x74,0x6F,0x6D,0x5F,0x6C,0x61,0x79,0x65,0x72,0x20,0x2E,0x6C,0x68,0x3A,0x6C,0x61,0x73,0x74,0x2D,0x63,0x68,0x69,0x6C,0x64,0x7B,0x6D,0x61,0x72,0x67,0x69,0x6E,0x2D,0x6C,0x65,0x66,0x74,0x3A,0x2D,0x32,0x70,0x78,0x3B,0x6D,0x61,0x72,0x67,0x69,0x6E,0x2D,0x72,0x69,0x67,0x68,0x74,0x3A,0x30,0x7D,0x23,0x62,0x6F,0x74,0x74,0x6F,0x6D,0x5F,0x6C,0x61,0x79,0x65,0x72,0x20,0x2E,0x6C,0x68,0x2E,0x61,0x63,0x74,0x69,0x76,0x69,0x74,0x79,0x7B,0x66,0x6F,0x6E,0x74,0x2D,0x77,0x65,0x69,0x67,0x68,0x74,0x3A,0x37,0x30,0x30,0x3B,0x74,0x65,0x78,0x74,0x2D,0x64,0x65,0x63,0x6F,0x72,0x61,0x74,0x69,0x6F,0x6E,0x3A,0x75,0x6E,0x64,0x65,0x72,0x6C,0x69,0x6E,0x65,0x7D,0x23,0x62,0x6F,0x74,0x74,0x6F,0x6D,0x5F,0x6C,0x61,0x79,0x65,0x72,0x20,0x61,0x7B,0x66,0x6F,0x6E,0x74,0x2D,0x73,0x69,0x7A,0x65,0x3A,0x31,0x32,0x70,0x78,0x3B,0x74,0x65,0x78,0x74,0x2D,0x64,0x65,0x63,0x6F,0x72,0x61,0x74,0x69,0x6F,0x6E,0x3A,0x6E,0x6F,0x6E,0x65,0x7D,0x23,0x62,0x6F,0x74,0x74,0x6F,0x6D,0x5F,0x6C,0x61,0x79,0x65,0x72,0x20,0x2E,0x74,0x65,0x78,0x74,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x7B,0x63,0x6F,0x6C,0x6F,0x72,0x3A,0x23,0x62,0x62,0x62,0x7D,0x23,0x62,0x6F,0x74,0x74,0x6F,0x6D,0x5F,0x6C,0x61,0x79,0x65,0x72,0x20,0x61,0x3A,0x68,0x6F,0x76,0x65,0x72,0x7B,0x63,0x6F,0x6C,0x6F,0x72,0x3A,0x23,0x32,0x32,0x32,0x7D,0x23,0x62,0x6F,0x74,0x74,0x6F,0x6D,0x5F,0x6C,0x61,0x79,0x65,0x72,0x20,0x2E,0x73,0x2D,0x62,0x6F,0x74,0x74,0x6F,0x6D,0x2D,0x6C,0x61,0x79,0x65,0x72,0x2D,0x63,0x6F,0x6E,0x74,0x65,0x6E,0x74,0x7B,0x74,0x65,0x78,0x74,0x2D,0x61,0x6C,0x69,0x67,0x6E,0x3A,0x63,0x65,0x6E,0x74,0x65,0x72,0x7D,0x3C,0x2F,0x73,0x74,0x79,0x6C,0x65,0x3E,0x3C,0x2F,0x68,0x65,0x61,0x64,0x3E,0x3C,0x62,0x6F,0x64,0x79,0x3E,0x3C,0x64,0x69,0x76,0x20,0x69,0x64,0x3D,0x22,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x22,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x5F,0x6E,0x65,0x77,0x22,0x3E,0x3C,0x64,0x69,0x76,0x20,0x69,0x64,0x3D,0x22,0x68,0x65,0x61,0x64,0x22,0x3E,0x3C,0x64,0x69,0x76,0x20,0x69,0x64,0x3D,0x22,0x73,0x2D,0x74,0x6F,0x70,0x2D,0x6C,0x65,0x66,0x74,0x22,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x73,0x2D,0x74,0x6F,0x70,0x2D,0x6C,0x65,0x66,0x74,0x20,0x73,0x2D,0x69,0x73,0x69,0x6E,0x64,0x65,0x78,0x2D,0x77,0x72,0x61,0x70,0x22,0x3E,0x3C,0x61,0x20,0x68,0x72,0x65,0x66,0x3D,0x22,0x2F,0x2F,0x6E,0x65,0x77,0x73,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x2F,0x22,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x3D,0x22,0x5F,0x62,0x6C,0x61,0x6E,0x6B,0x22,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x6D,0x6E,0x61,0x76,0x20,0x63,0x2D,0x66,0x6F,0x6E,0x74,0x2D,0x6E,0x6F,0x72,0x6D,0x61,0x6C,0x20,0x63,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x2D,0x74,0x22,0x3E,0xE6,0x96,0xB0,0xE9,0x97,0xBB,0x3C,0x2F,0x61,0x3E,0x3C,0x61,0x20,0x68,0x72,0x65,0x66,0x3D,0x22,0x2F,0x2F,0x77,0x77,0x77,0x2E,0x68,0x61,0x6F,0x31,0x32,0x33,0x2E,0x63,0x6F,0x6D,0x2F,0x22,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x3D,0x22,0x5F,0x62,0x6C,0x61,0x6E,0x6B,0x22,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x6D,0x6E,0x61,0x76,0x20,0x63,0x2D,0x66,0x6F,0x6E,0x74,0x2D,0x6E,0x6F,0x72,0x6D,0x61,0x6C,0x20,0x63,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x2D,0x74,0x22,0x3E,0x68,0x61,0x6F,0x31,0x32,0x33,0x3C,0x2F,0x61,0x3E,0x3C,0x61,0x20,0x68,0x72,0x65,0x66,0x3D,0x22,0x2F,0x2F,0x6D,0x61,0x70,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x2F,0x22,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x3D,0x22,0x5F,0x62,0x6C,0x61,0x6E,0x6B,0x22,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x6D,0x6E,0x61,0x76,0x20,0x63,0x2D,0x66,0x6F,0x6E,0x74,0x2D,0x6E,0x6F,0x72,0x6D,0x61,0x6C,0x20,0x63,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x2D,0x74,0x22,0x3E,0xE5,0x9C,0xB0,0xE5,0x9B,0xBE,0x3C,0x2F,0x61,0x3E,0x3C,0x61,0x20,0x68,0x72,0x65,0x66,0x3D,0x22,0x2F,0x2F,0x6C,0x69,0x76,0x65,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x2F,0x22,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x3D,0x22,0x5F,0x62,0x6C,0x61,0x6E,0x6B,0x22,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x6D,0x6E,0x61,0x76,0x20,0x63,0x2D,0x66,0x6F,0x6E,0x74,0x2D,0x6E,0x6F,0x72,0x6D,0x61,0x6C,0x20,0x63,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x2D,0x74,0x22,0x3E,0xE7,0x9B,0xB4,0xE6,0x92,0xAD,0x3C,0x2F,0x61,0x3E,0x3C,0x61,0x20,0x68,0x72,0x65,0x66,0x3D,0x22,0x2F,0x2F,0x68,0x61,0x6F,0x6B,0x61,0x6E,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x2F,0x3F,0x73,0x66,0x72,0x6F,0x6D,0x3D,0x62,0x61,0x69,0x64,0x75,0x2D,0x74,0x6F,0x70,0x22,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x3D,0x22,0x5F,0x62,0x6C,0x61,0x6E,0x6B,0x22,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x6D,0x6E,0x61,0x76,0x20,0x63,0x2D,0x66,0x6F,0x6E,0x74,0x2D,0x6E,0x6F,0x72,0x6D,0x61,0x6C,0x20,0x63,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x2D,0x74,0x22,0x3E,0xE8,0xA7,0x86,0xE9,0xA2,0x91,0x3C,0x2F,0x61,0x3E,0x3C,0x61,0x20,0x68,0x72,0x65,0x66,0x3D,0x22,0x2F,0x2F,0x74,0x69,0x65,0x62,0x61,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x2F,0x22,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x3D,0x22,0x5F,0x62,0x6C,0x61,0x6E,0x6B,0x22,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x6D,0x6E,0x61,0x76,0x20,0x63,0x2D,0x66,0x6F,0x6E,0x74,0x2D,0x6E,0x6F,0x72,0x6D,0x61,0x6C,0x20,0x63,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x2D,0x74,0x22,0x3E,0xE8,0xB4,0xB4,0xE5,0x90,0xA7,0x3C,0x2F,0x61,0x3E,0x3C,0x61,0x20,0x68,0x72,0x65,0x66,0x3D,0x22,0x2F,0x2F,0x78,0x75,0x65,0x73,0x68,0x75,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x2F,0x22,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x3D,0x22,0x5F,0x62,0x6C,0x61,0x6E,0x6B,0x22,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x6D,0x6E,0x61,0x76,0x20,0x63,0x2D,0x66,0x6F,0x6E,0x74,0x2D,0x6E,0x6F,0x72,0x6D,0x61,0x6C,0x20,0x63,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x2D,0x74,0x22,0x3E,0xE5,0xAD,0xA6,0xE6,0x9C,0xAF,0x3C,0x2F,0x61,0x3E,0x3C,0x64,0x69,0x76,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x6D,0x6E,0x61,0x76,0x20,0x73,0x2D,0x74,0x6F,0x70,0x2D,0x6D,0x6F,0x72,0x65,0x2D,0x62,0x74,0x6E,0x22,0x3E,0x3C,0x61,0x20,0x68,0x72,0x65,0x66,0x3D,0x22,0x2F,0x2F,0x77,0x77,0x77,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x2F,0x6D,0x6F,0x72,0x65,0x2F,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x74,0x6A,0x5F,0x62,0x72,0x69,0x69,0x63,0x6F,0x6E,0x22,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x73,0x2D,0x62,0x72,0x69,0x20,0x63,0x2D,0x66,0x6F,0x6E,0x74,0x2D,0x6E,0x6F,0x72,0x6D,0x61,0x6C,0x20,0x63,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x2D,0x74,0x22,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x3D,0x22,0x5F,0x62,0x6C,0x61,0x6E,0x6B,0x22,0x3E,0xE6,0x9B,0xB4,0xE5,0xA4,0x9A,0x3C,0x2F,0x61,0x3E,0x3C,0x2F,0x64,0x69,0x76,0x3E,0x3C,0x2F,0x64,0x69,0x76,0x3E,0x3C,0x64,0x69,0x76,0x20,0x69,0x64,0x3D,0x22,0x75,0x31,0x22,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x73,0x2D,0x74,0x6F,0x70,0x2D,0x72,0x69,0x67,0x68,0x74,0x20,0x73,0x2D,0x69,0x73,0x69,0x6E,0x64,0x65,0x78,0x2D,0x77,0x72,0x61,0x70,0x22,0x3E,0x3C,0x61,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x73,0x2D,0x74,0x6F,0x70,0x2D,0x6C,0x6F,0x67,0x69,0x6E,0x2D,0x62,0x74,0x6E,0x20,0x63,0x2D,0x62,0x74,0x6E,0x20,0x63,0x2D,0x62,0x74,0x6E,0x2D,0x70,0x72,0x69,0x6D,0x61,0x72,0x79,0x20,0x63,0x2D,0x62,0x74,0x6E,0x2D,0x6D,0x69,0x6E,0x69,0x20,0x6C,0x62,0x22,0x20,0x73,0x74,0x79,0x6C,0x65,0x3D,0x22,0x70,0x6F,0x73,0x69,0x74,0x69,0x6F,0x6E,0x3A,0x72,0x65,0x6C,0x61,0x74,0x69,0x76,0x65,0x3B,0x6F,0x76,0x65,0x72,0x66,0x6C,0x6F,0x77,0x3A,0x76,0x69,0x73,0x69,0x62,0x6C,0x65,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x74,0x6A,0x5F,0x6C,0x6F,0x67,0x69,0x6E,0x22,0x20,0x68,0x72,0x65,0x66,0x3D,0x22,0x2F,0x2F,0x77,0x77,0x77,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x2F,0x62,0x64,0x6F,0x72,0x7A,0x2F,0x6C,0x6F,0x67,0x69,0x6E,0x2E,0x67,0x69,0x66,0x3F,0x6C,0x6F,0x67,0x69,0x6E,0x26,0x61,0x6D,0x70,0x3B,0x74,0x70,0x6C,0x3D,0x6D,0x6E,0x26,0x61,0x6D,0x70,0x3B,0x75,0x3D,0x68,0x74,0x74,0x70,0x25,0x33,0x41,0x25,0x32,0x46,0x25,0x32,0x46,0x77,0x77,0x77,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x25,0x32,0x66,0x25,0x33,0x66,0x62,0x64,0x6F,0x72,0x7A,0x5F,0x63,0x6F,0x6D,0x65,0x25,0x33,0x64,0x31,0x22,0x3E,0xE7,0x99,0xBB,0xE5,0xBD,0x95,0x3C,0x2F,0x61,0x3E,0x3C,0x2F,0x64,0x69,0x76,0x3E,0x3C,0x64,0x69,0x76,0x20,0x69,0x64,0x3D,0x22,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x22,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x68,0x65,0x61,0x64,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x20,0x73,0x2D,0x69,0x73,0x69,0x6E,0x64,0x65,0x78,0x2D,0x77,0x72,0x61,0x70,0x20,0x73,0x2D,0x70,0x73,0x2D,0x69,0x73,0x6C,0x69,0x74,0x65,0x22,0x3E,0x3C,0x64,0x69,0x76,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x73,0x5F,0x66,0x6F,0x72,0x6D,0x22,0x3E,0x3C,0x64,0x69,0x76,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x73,0x5F,0x66,0x6F,0x72,0x6D,0x5F,0x77,0x72,0x61,0x70,0x70,0x65,0x72,0x22,0x3E,0x3C,0x64,0x69,0x76,0x20,0x69,0x64,0x3D,0x22,0x6C,0x67,0x22,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x73,0x2D,0x70,0x2D,0x74,0x6F,0x70,0x22,0x3E,0x3C,0x69,0x6D,0x67,0x20,0x68,0x69,0x64,0x65,0x66,0x6F,0x63,0x75,0x73,0x3D,0x22,0x74,0x72,0x75,0x65,0x22,0x20,0x69,0x64,0x3D,0x22,0x73,0x5F,0x6C,0x67,0x5F,0x69,0x6D,0x67,0x22,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x69,0x6E,0x64,0x65,0x78,0x2D,0x6C,0x6F,0x67,0x6F,0x2D,0x73,0x72,0x63,0x22,0x20,0x73,0x72,0x63,0x3D,0x22,0x2F,0x2F,0x77,0x77,0x77,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x2F,0x69,0x6D,0x67,0x2F,0x66,0x6C,0x65,0x78,0x69,0x62,0x6C,0x65,0x2F,0x6C,0x6F,0x67,0x6F,0x2F,0x70,0x63,0x2F,0x69,0x6E,0x64,0x65,0x78,0x2E,0x70,0x6E,0x67,0x22,0x20,0x77,0x69,0x64,0x74,0x68,0x3D,0x22,0x32,0x37,0x30,0x22,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3D,0x22,0x31,0x32,0x39,0x22,0x20,0x75,0x73,0x65,0x6D,0x61,0x70,0x3D,0x22,0x23,0x6D,0x70,0x22,0x3E,0x3C,0x6D,0x61,0x70,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x6D,0x70,0x22,0x3E,0x3C,0x61,0x72,0x65,0x61,0x20,0x73,0x74,0x79,0x6C,0x65,0x3D,0x22,0x6F,0x75,0x74,0x6C,0x69,0x6E,0x65,0x3A,0x30,0x22,0x20,0x68,0x69,0x64,0x65,0x66,0x6F,0x63,0x75,0x73,0x3D,0x22,0x74,0x72,0x75,0x65,0x22,0x20,0x73,0x68,0x61,0x70,0x65,0x3D,0x22,0x72,0x65,0x63,0x74,0x22,0x20,0x63,0x6F,0x6F,0x72,0x64,0x73,0x3D,0x22,0x30,0x2C,0x30,0x2C,0x32,0x37,0x30,0x2C,0x31,0x32,0x39,0x22,0x20,0x68,0x72,0x65,0x66,0x3D,0x22,0x2F,0x2F,0x77,0x77,0x77,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x2F,0x73,0x3F,0x77,0x64,0x3D,0x25,0x45,0x37,0x25,0x39,0x39,0x25,0x42,0x45,0x25,0x45,0x35,0x25,0x42,0x41,0x25,0x41,0x36,0x25,0x45,0x37,0x25,0x38,0x33,0x25,0x41,0x44,0x25,0x45,0x36,0x25,0x39,0x30,0x25,0x39,0x43,0x26,0x61,0x6D,0x70,0x3B,0x73,0x61,0x3D,0x69,0x72,0x65,0x5F,0x64,0x6C,0x5F,0x67,0x68,0x5F,0x6C,0x6F,0x67,0x6F,0x5F,0x74,0x65,0x78,0x69,0x6E,0x67,0x26,0x61,0x6D,0x70,0x3B,0x72,0x73,0x76,0x5F,0x64,0x6C,0x3D,0x69,0x67,0x68,0x5F,0x6C,0x6F,0x67,0x6F,0x5F,0x70,0x63,0x73,0x22,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x3D,0x22,0x5F,0x62,0x6C,0x61,0x6E,0x6B,0x22,0x20,0x74,0x69,0x74,0x6C,0x65,0x3D,0x22,0xE7,0x82,0xB9,0xE5,0x87,0xBB,0xE4,0xB8,0x80,0xE4,0xB8,0x8B,0xEF,0xBC,0x8C,0xE4,0xBA,0x86,0xE8,0xA7,0xA3,0xE6,0x9B,0xB4,0xE5,0xA4,0x9A,0x22,0x3E,0x3C,0x2F,0x6D,0x61,0x70,0x3E,0x3C,0x2F,0x64,0x69,0x76,0x3E,0x3C,0x61,0x20,0x68,0x72,0x65,0x66,0x3D,0x22,0x2F,0x2F,0x77,0x77,0x77,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x2F,0x22,0x20,0x69,0x64,0x3D,0x22,0x72,0x65,0x73,0x75,0x6C,0x74,0x5F,0x6C,0x6F,0x67,0x6F,0x22,0x3E,0x3C,0x2F,0x61,0x3E,0x3C,0x66,0x6F,0x72,0x6D,0x20,0x69,0x64,0x3D,0x22,0x66,0x6F,0x72,0x6D,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x66,0x22,0x20,0x61,0x63,0x74,0x69,0x6F,0x6E,0x3D,0x22,0x2F,0x2F,0x77,0x77,0x77,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x2F,0x73,0x22,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x66,0x6D,0x22,0x3E,0x3C,0x69,0x6E,0x70,0x75,0x74,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x68,0x69,0x64,0x64,0x65,0x6E,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x69,0x65,0x22,0x20,0x76,0x61,0x6C,0x75,0x65,0x3D,0x22,0x75,0x74,0x66,0x2D,0x38,0x22,0x3E,0x20,0x3C,0x69,0x6E,0x70,0x75,0x74,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x68,0x69,0x64,0x64,0x65,0x6E,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x66,0x22,0x20,0x76,0x61,0x6C,0x75,0x65,0x3D,0x22,0x38,0x22,0x3E,0x20,0x3C,0x69,0x6E,0x70,0x75,0x74,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x68,0x69,0x64,0x64,0x65,0x6E,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x72,0x73,0x76,0x5F,0x62,0x70,0x22,0x20,0x76,0x61,0x6C,0x75,0x65,0x3D,0x22,0x31,0x22,0x3E,0x20,0x3C,0x69,0x6E,0x70,0x75,0x74,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x68,0x69,0x64,0x64,0x65,0x6E,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x72,0x73,0x76,0x5F,0x69,0x64,0x78,0x22,0x20,0x76,0x61,0x6C,0x75,0x65,0x3D,0x22,0x31,0x22,0x3E,0x20,0x3C,0x69,0x6E,0x70,0x75,0x74,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x68,0x69,0x64,0x64,0x65,0x6E,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x63,0x68,0x22,0x20,0x76,0x61,0x6C,0x75,0x65,0x3D,0x22,0x22,0x3E,0x20,0x3C,0x69,0x6E,0x70,0x75,0x74,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x68,0x69,0x64,0x64,0x65,0x6E,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x74,0x6E,0x22,0x20,0x76,0x61,0x6C,0x75,0x65,0x3D,0x22,0x62,0x61,0x69,0x64,0x75,0x22,0x3E,0x20,0x3C,0x69,0x6E,0x70,0x75,0x74,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x68,0x69,0x64,0x64,0x65,0x6E,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x62,0x61,0x72,0x22,0x20,0x76,0x61,0x6C,0x75,0x65,0x3D,0x22,0x22,0x3E,0x20,0x3C,0x73,0x70,0x61,0x6E,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x73,0x5F,0x69,0x70,0x74,0x5F,0x77,0x72,0x20,0x71,0x75,0x69,0x63,0x6B,0x64,0x65,0x6C,0x65,0x74,0x65,0x2D,0x77,0x72,0x61,0x70,0x22,0x3E,0x3C,0x69,0x6E,0x70,0x75,0x74,0x20,0x69,0x64,0x3D,0x22,0x6B,0x77,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x77,0x64,0x22,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x73,0x5F,0x69,0x70,0x74,0x22,0x20,0x76,0x61,0x6C,0x75,0x65,0x3D,0x22,0x22,0x20,0x6D,0x61,0x78,0x6C,0x65,0x6E,0x67,0x74,0x68,0x3D,0x22,0x32,0x35,0x35,0x22,0x20,0x61,0x75,0x74,0x6F,0x63,0x6F,0x6D,0x70,0x6C,0x65,0x74,0x65,0x3D,0x22,0x6F,0x66,0x66,0x22,0x3E,0x20,0x3C,0x2F,0x73,0x70,0x61,0x6E,0x3E,0x3C,0x73,0x70,0x61,0x6E,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x73,0x5F,0x62,0x74,0x6E,0x5F,0x77,0x72,0x22,0x3E,0x3C,0x69,0x6E,0x70,0x75,0x74,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x73,0x75,0x62,0x6D,0x69,0x74,0x22,0x20,0x69,0x64,0x3D,0x22,0x73,0x75,0x22,0x20,0x76,0x61,0x6C,0x75,0x65,0x3D,0x22,0xE7,0x99,0xBE,0xE5,0xBA,0xA6,0xE4,0xB8,0x80,0xE4,0xB8,0x8B,0x22,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x62,0x67,0x20,0x73,0x5F,0x62,0x74,0x6E,0x22,0x3E,0x20,0x3C,0x2F,0x73,0x70,0x61,0x6E,0x3E,0x3C,0x69,0x6E,0x70,0x75,0x74,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x68,0x69,0x64,0x64,0x65,0x6E,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x72,0x6E,0x22,0x20,0x76,0x61,0x6C,0x75,0x65,0x3D,0x22,0x22,0x3E,0x20,0x3C,0x69,0x6E,0x70,0x75,0x74,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x68,0x69,0x64,0x64,0x65,0x6E,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x66,0x65,0x6E,0x6C,0x65,0x69,0x22,0x20,0x76,0x61,0x6C,0x75,0x65,0x3D,0x22,0x32,0x35,0x36,0x22,0x3E,0x20,0x3C,0x69,0x6E,0x70,0x75,0x74,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x68,0x69,0x64,0x64,0x65,0x6E,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x6F,0x71,0x22,0x20,0x76,0x61,0x6C,0x75,0x65,0x3D,0x22,0x22,0x3E,0x20,0x3C,0x69,0x6E,0x70,0x75,0x74,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x68,0x69,0x64,0x64,0x65,0x6E,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x72,0x73,0x76,0x5F,0x70,0x71,0x22,0x20,0x76,0x61,0x6C,0x75,0x65,0x3D,0x22,0x62,0x39,0x66,0x66,0x30,0x39,0x33,0x65,0x30,0x30,0x30,0x30,0x65,0x34,0x31,0x39,0x22,0x3E,0x20,0x3C,0x69,0x6E,0x70,0x75,0x74,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x68,0x69,0x64,0x64,0x65,0x6E,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x72,0x73,0x76,0x5F,0x74,0x22,0x20,0x76,0x61,0x6C,0x75,0x65,0x3D,0x22,0x33,0x36,0x33,0x35,0x46,0x59,0x62,0x64,0x62,0x43,0x38,0x74,0x6C,0x57,0x6D,0x75,0x64,0x5A,0x6D,0x59,0x61,0x55,0x6E,0x61,0x75,0x63,0x4E,0x65,0x2B,0x52,0x7A,0x54,0x7A,0x4E,0x45,0x47,0x71,0x67,0x2F,0x4A,0x75,0x6E,0x69,0x51,0x55,0x31,0x30,0x57,0x4C,0x35,0x6D,0x74,0x4D,0x51,0x65,0x68,0x49,0x72,0x55,0x22,0x3E,0x20,0x3C,0x69,0x6E,0x70,0x75,0x74,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x68,0x69,0x64,0x64,0x65,0x6E,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x72,0x71,0x6C,0x61,0x6E,0x67,0x22,0x20,0x76,0x61,0x6C,0x75,0x65,0x3D,0x22,0x63,0x6E,0x22,0x3E,0x20,0x3C,0x69,0x6E,0x70,0x75,0x74,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x68,0x69,0x64,0x64,0x65,0x6E,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x72,0x73,0x76,0x5F,0x65,0x6E,0x74,0x65,0x72,0x22,0x20,0x76,0x61,0x6C,0x75,0x65,0x3D,0x22,0x31,0x22,0x3E,0x20,0x3C,0x69,0x6E,0x70,0x75,0x74,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x68,0x69,0x64,0x64,0x65,0x6E,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x72,0x73,0x76,0x5F,0x64,0x6C,0x22,0x20,0x76,0x61,0x6C,0x75,0x65,0x3D,0x22,0x69,0x62,0x22,0x3E,0x3C,0x2F,0x66,0x6F,0x72,0x6D,0x3E,0x3C,0x2F,0x64,0x69,0x76,0x3E,0x3C,0x2F,0x64,0x69,0x76,0x3E,0x3C,0x2F,0x64,0x69,0x76,0x3E,0x3C,0x64,0x69,0x76,0x20,0x69,0x64,0x3D,0x22,0x62,0x6F,0x74,0x74,0x6F,0x6D,0x5F,0x6C,0x61,0x79,0x65,0x72,0x22,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x73,0x2D,0x62,0x6F,0x74,0x74,0x6F,0x6D,0x2D,0x6C,0x61,0x79,0x65,0x72,0x20,0x73,0x2D,0x69,0x73,0x69,0x6E,0x64,0x65,0x78,0x2D,0x77,0x72,0x61,0x70,0x22,0x3E,0x3C,0x64,0x69,0x76,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x73,0x2D,0x62,0x6F,0x74,0x74,0x6F,0x6D,0x2D,0x6C,0x61,0x79,0x65,0x72,0x2D,0x63,0x6F,0x6E,0x74,0x65,0x6E,0x74,0x22,0x3E,0x3C,0x70,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x6C,0x68,0x22,0x3E,0x3C,0x61,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x74,0x65,0x78,0x74,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x22,0x20,0x68,0x72,0x65,0x66,0x3D,0x22,0x2F,0x2F,0x68,0x6F,0x6D,0x65,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x2F,0x22,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x3D,0x22,0x5F,0x62,0x6C,0x61,0x6E,0x6B,0x22,0x3E,0xE5,0x85,0xB3,0xE4,0xBA,0x8E,0xE7,0x99,0xBE,0xE5,0xBA,0xA6,0x3C,0x2F,0x61,0x3E,0x3C,0x2F,0x70,0x3E,0x3C,0x70,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x6C,0x68,0x22,0x3E,0x3C,0x61,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x74,0x65,0x78,0x74,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x22,0x20,0x68,0x72,0x65,0x66,0x3D,0x22,0x2F,0x2F,0x69,0x72,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x2F,0x22,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x3D,0x22,0x5F,0x62,0x6C,0x61,0x6E,0x6B,0x22,0x3E,0x41,0x62,0x6F,0x75,0x74,0x20,0x42,0x61,0x69,0x64,0x75,0x3C,0x2F,0x61,0x3E,0x3C,0x2F,0x70,0x3E,0x3C,0x70,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x6C,0x68,0x22,0x3E,0x3C,0x61,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x74,0x65,0x78,0x74,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x22,0x20,0x68,0x72,0x65,0x66,0x3D,0x22,0x2F,0x2F,0x77,0x77,0x77,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x2F,0x64,0x75,0x74,0x79,0x22,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x3D,0x22,0x5F,0x62,0x6C,0x61,0x6E,0x6B,0x22,0x3E,0xE4,0xBD,0xBF,0xE7,0x94,0xA8,0xE7,0x99,0xBE,0xE5,0xBA,0xA6,0xE5,0x89,0x8D,0xE5,0xBF,0x85,0xE8,0xAF,0xBB,0x3C,0x2F,0x61,0x3E,0x3C,0x2F,0x70,0x3E,0x3C,0x70,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x6C,0x68,0x22,0x3E,0x3C,0x61,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x74,0x65,0x78,0x74,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x22,0x20,0x68,0x72,0x65,0x66,0x3D,0x22,0x2F,0x2F,0x68,0x65,0x6C,0x70,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x2F,0x22,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x3D,0x22,0x5F,0x62,0x6C,0x61,0x6E,0x6B,0x22,0x3E,0xE5,0xB8,0xAE,0xE5,0x8A,0xA9,0xE4,0xB8,0xAD,0xE5,0xBF,0x83,0x3C,0x2F,0x61,0x3E,0x3C,0x2F,0x70,0x3E,0x3C,0x70,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x6C,0x68,0x22,0x3E,0x3C,0x61,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x74,0x65,0x78,0x74,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x22,0x20,0x68,0x72,0x65,0x66,0x3D,0x22,0x2F,0x2F,0x77,0x77,0x77,0x2E,0x62,0x65,0x69,0x61,0x6E,0x2E,0x67,0x6F,0x76,0x2E,0x63,0x6E,0x2F,0x70,0x6F,0x72,0x74,0x61,0x6C,0x2F,0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x53,0x79,0x73,0x74,0x65,0x6D,0x49,0x6E,0x66,0x6F,0x3F,0x72,0x65,0x63,0x6F,0x72,0x64,0x63,0x6F,0x64,0x65,0x3D,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x32,0x30,0x30,0x30,0x30,0x30,0x31,0x22,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x3D,0x22,0x5F,0x62,0x6C,0x61,0x6E,0x6B,0x22,0x3E,0xE4,0xBA,0xAC,0xE5,0x85,0xAC,0xE7,0xBD,0x91,0xE5,0xAE,0x89,0xE5,0xA4,0x87,0x31,0x31,0x30,0x30,0x30,0x30,0x30,0x32,0x30,0x30,0x30,0x30,0x30,0x31,0xE5,0x8F,0xB7,0x3C,0x2F,0x61,0x3E,0x3C,0x2F,0x70,0x3E,0x3C,0x70,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x6C,0x68,0x22,0x3E,0x3C,0x61,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x74,0x65,0x78,0x74,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x22,0x20,0x68,0x72,0x65,0x66,0x3D,0x22,0x2F,0x2F,0x62,0x65,0x69,0x61,0x6E,0x2E,0x6D,0x69,0x69,0x74,0x2E,0x67,0x6F,0x76,0x2E,0x63,0x6E,0x2F,0x22,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x3D,0x22,0x5F,0x62,0x6C,0x61,0x6E,0x6B,0x22,0x3E,0xE4,0xBA,0xAC,0x49,0x43,0x50,0xE8,0xAF,0x81,0x30,0x33,0x30,0x31,0x37,0x33,0xE5,0x8F,0xB7,0x3C,0x2F,0x61,0x3E,0x3C,0x2F,0x70,0x3E,0x3C,0x70,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x6C,0x68,0x22,0x3E,0x3C,0x73,0x70,0x61,0x6E,0x20,0x69,0x64,0x3D,0x22,0x79,0x65,0x61,0x72,0x22,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x74,0x65,0x78,0x74,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x22,0x3E,0x3C,0x2F,0x73,0x70,0x61,0x6E,0x3E,0x3C,0x2F,0x70,0x3E,0x3C,0x70,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x6C,0x68,0x22,0x3E,0x3C,0x73,0x70,0x61,0x6E,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x74,0x65,0x78,0x74,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x22,0x3E,0xE4,0xBA,0x92,0xE8,0x81,0x94,0xE7,0xBD,0x91,0xE8,0x8D,0xAF,0xE5,0x93,0x81,0xE4,0xBF,0xA1,0xE6,0x81,0xAF,0xE6,0x9C,0x8D,0xE5,0x8A,0xA1,0xE8,0xB5,0x84,0xE6,0xA0,0xBC,0xE8,0xAF,0x81,0xE4,0xB9,0xA6,0x20,0x28,0xE4,0xBA,0xAC,0x29,0x2D,0xE7,0xBB,0x8F,0xE8,0x90,0xA5,0xE6,0x80,0xA7,0x2D,0x32,0x30,0x31,0x37,0x2D,0x30,0x30,0x32,0x30,0x3C,0x2F,0x73,0x70,0x61,0x6E,0x3E,0x3C,0x2F,0x70,0x3E,0x3C,0x70,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x6C,0x68,0x22,0x3E,0x3C,0x61,0x20,0x63,0x6C,0x61,0x73,0x73,0x3D,0x22,0x74,0x65,0x78,0x74,0x2D,0x63,0x6F,0x6C,0x6F,0x72,0x22,0x20,0x68,0x72,0x65,0x66,0x3D,0x22,0x2F,0x2F,0x77,0x77,0x77,0x2E,0x62,0x61,0x69,0x64,0x75,0x2E,0x63,0x6F,0x6D,0x2F,0x6C,0x69,0x63,0x65,0x6E,0x63,0x65,0x2F,0x22,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x3D,0x22,0x5F,0x62,0x6C,0x61,0x6E,0x6B,0x22,0x3E,0xE4,0xBF,0xA1,0xE6,0x81,0xAF,0xE7,0xBD,0x91,0xE7,0xBB,0x9C,0xE4,0xBC,0xA0,0xE6,0x92,0xAD,0xE8,0xA7,0x86,0xE5,0x90,0xAC,0xE8,0x8A,0x82,0xE7,0x9B,0xAE,0xE8,0xAE,0xB8,0xE5,0x8F,0xAF,0xE8,0xAF,0x81,0x20,0x30,0x31,0x31,0x30,0x35,0x31,0x36,0x3C,0x2F,0x61,0x3E,0x3C,0x2F,0x70,0x3E,0x3C,0x2F,0x64,0x69,0x76,0x3E,0x3C,0x2F,0x64,0x69,0x76,0x3E,0x3C,0x2F,0x64,0x69,0x76,0x3E,0x3C,0x2F,0x64,0x69,0x76,0x3E,0x3C,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x74,0x79,0x70,0x65,0x3D,0x22,0x74,0x65,0x78,0x74,0x2F,0x6A,0x61,0x76,0x61,0x73,0x63,0x72,0x69,0x70,0x74,0x22,0x3E,0x76,0x61,0x72,0x20,0x64,0x61,0x74,0x65,0x3D,0x6E,0x65,0x77,0x20,0x44,0x61,0x74,0x65,0x2C,0x79,0x65,0x61,0x72,0x3D,0x64,0x61,0x74,0x65,0x2E,0x67,0x65,0x74,0x46,0x75,0x6C,0x6C,0x59,0x65,0x61,0x72,0x28,0x29,0x3B,0x64,0x6F,0x63,0x75,0x6D,0x65,0x6E,0x74,0x2E,0x67,0x65,0x74,0x45,0x6C,0x65,0x6D,0x65,0x6E,0x74,0x42,0x79,0x49,0x64,0x28,0x22,0x79,0x65,0x61,0x72,0x22,0x29,0x2E,0x69,0x6E,0x6E,0x65,0x72,0x54,0x65,0x78,0x74,0x3D,0x22,0xC2,0xA9,0x22,0x2B,0x79,0x65,0x61,0x72,0x2B,0x22,0x20,0x42,0x61,0x69,0x64,0x75,0x20,0x22,0x3C,0x2F,0x73,0x63,0x72,0x69,0x70,0x74,0x3E,0x3C,0x2F,0x62,0x6F,0x64,0x79,0x3E,0x3C,0x2F,0x68,0x74,0x6D,0x6C,0x3E };

int64_t tcpServer_index = 0;
int64_t tcpServer_maxIndex = 0;
int64_t tcpServer_readIndex = 0;
int64_t tcpServer_writeIndex = 0;
int64_t tcpServer_userMaxIndex = 0;

// 默认值
std::string listenIp = "0.0.0.0";
int listenPort = 8075;
std::string forwardIp = "127.0.0.1";
int forwardPort = 8080;

void tcpServer_close(VTcp* client) {
  Log->logInfo("server close !\n");
}

void tcpClient_close(VTcpClient* client) {
  tcpServer_index--;
  //Log->logInfo("client close !\n");
}

void tcpClient_write(VTcpClient* client, const VBuf* data, int status) {
  tcpServer_writeIndex++;
  delete data;
  tcpServer.closeClient(client);
  client->close();

}

void tcpClient_read(VTcpClient* client, const VBuf* data) {
  tcpServer_readIndex++;

  Log->logInfo("client data:%s\n", data->getData());
  if (data->size() == 1) {
      //VBuf* newdata = new VBuf(data->getData(), data->size());
      VBuf* newdata = new VBuf(getTestData);
      client->writeData(*newdata);
  }
  else if (data->toString().find("GET ") != -1) {
      //VBuf* newdata = new VBuf(getTestTime1 + Log->getCurrentDateTime() + getTestTime2);
      VBuf* newdata = new VBuf(baiduRecv,10498);
      client->writeData(*newdata);

      
  }
 
 
}

void idleCallback() {
	std::this_thread::sleep_for(std::chrono::milliseconds(1));
}

void connectiondCallback(int status) {
	STD_L_ZERO_ERROR_SHOW(status, "connectiondCallback is error");
}


void send_tcpClient_close(VTcpClient* client) {
	//std::string perIP;
	//int perPort;
	//client->getPeerAddrs(perIP, perPort);
	//Log->logInfo("send_client close(%s:%d) !\n", perIP.c_str(), perPort);
	Log->logInfo("send_client close !\n");
}

void send_tcpClient_write(VTcpClient* client, const VBuf* data, int status) {

	STD_L_ZERO_ERROR_SHOW(status, "writeCallback is error");
}

void send_tcpClient_read(VTcpClient* client, const VBuf* data) {
	std::string perIP;
	int perPort;
	client->getPeerAddrs(perIP, perPort);

	Log->logInfo("send_client(%s:%d) data:%s\n", perIP.c_str(), perPort, data->getData());
	size_t dataSize = data->size();
	const unsigned char* rawData = reinterpret_cast<const unsigned char*>(data->getData());

	// 预分配足够的内存
	std::string hexString;
	hexString.reserve(dataSize * 3); // 每个字节 2 个字符 + 空格

	for (size_t i = 0; i < dataSize; ++i) {
		// 直接将16进制字符串附加到 hexString
		char buffer[4]; // 包含两个字符和一个空格
		std::sprintf(buffer, "%02x ", rawData[i]);
		hexString.append(buffer);
	}

	// 日志输出
	Log->logVerbose("send_client(%s:%d) data (hex): %s\n", perIP.c_str(), perPort, hexString.c_str());

	if (client->getData() == nullptr)
	{
		client->close();
		return;
	}
	((VTcpClient*)client->getData())->writeNewData(*data);

}


void recv_tcpClient_close(VTcpClient* client) {
	tcpServer_index--;
	/*std::string perIP;
	int perPort;
	client->getPeerAddrs(perIP, perPort);
	Log->logInfo("recv_client close(%s:%d) !\n", perIP.c_str(), perPort);*/
	Log->logInfo("recv_client close !\n");

}

void recv_tcpClient_write(VTcpClient* client, const VBuf* data, int status) {
	tcpServer_writeIndex++;

}

void recv_tcpClient_read(VTcpClient* client, const VBuf* data) {
	tcpServer_readIndex++;
	std::string perIP;
	int perPort;
	client->getPeerAddrs(perIP, perPort);

	Log->logInfo("recv_client(%s:%d) data:%s\n", perIP.c_str(), perPort, data->getData());
	size_t dataSize = data->size();
	const unsigned char* rawData = reinterpret_cast<const unsigned char*>(data->getData());

	// 预分配足够的内存
	std::string hexString;
	hexString.reserve(dataSize * 3); // 每个字节 2 个字符 + 空格

	for (size_t i = 0; i < dataSize; ++i) {
		// 直接将16进制字符串附加到 hexString
		char buffer[4]; // 包含两个字符和一个空格
		std::sprintf(buffer, "%02x ", rawData[i]);
		hexString.append(buffer);
	}

	// 日志输出
	
	Log->logVerbose("recv_client(%s:%d) data (hex): %s\n", perIP.c_str(), perPort, hexString.c_str());

	if (client->getData() == nullptr)
	{
		tcpServer.closeClient(client);
		return;
	}
	((VTcpClient*)client->getData())->writeNewData(*data);
}


void newClient(VTcpClient* recv_client) {
  tcpServer_index++;
  tcpServer_maxIndex++;
  if (tcpServer_userMaxIndex < tcpServer_index) {
    tcpServer_userMaxIndex = tcpServer_index;
  }


  std::string recvPerIP;
  int recvPerPort;
  recv_client->getPeerAddrs(recvPerIP, recvPerPort);

  recv_client->setCloseCb(recv_tcpClient_close);
  recv_client->setReadCb(recv_tcpClient_read);
  recv_client->setWriteCb(recv_tcpClient_write);
  recv_client->clientReadStart();
  Log->logInfo("new recv_client(%s:%d) connect !\n", recvPerIP.c_str(), recvPerPort);

  VTcpClient send_client_;
  VTcpClient* send_client = new VTcpClient();
  send_client->setIdleCb(idleCallback);
  send_client->setCloseCb(send_tcpClient_close);
  send_client->setWriteCb(send_tcpClient_write);
  send_client->setReadCb(send_tcpClient_read);
  send_client->setConnectiondCb(connectiondCallback);

  int ret = send_client->connect(forwardIp.c_str(), forwardPort);
  if (ret) {
	  tcpServer.closeClient(recv_client);
	  delete send_client;
	  return;
  }
  send_client->run(UV_RUN_ONCE);

  send_client->clientReadStart();

  send_client->setData(recv_client);
  recv_client->setData(send_client);

  bool send_tcp_closed = false;
  bool recv_tcp_closed = false;


  std::string sendPerIP;
  int sendPerPort;
  send_client->getLocalAddrs(sendPerIP, sendPerPort);
  
  Log->logInfo("new recv_client(%s:%d) connect to send_client(local:%s:%d peer:%s:%d) !\n",
	  recvPerIP.c_str(), recvPerPort, sendPerIP.c_str(), sendPerPort, forwardIp.c_str(), forwardPort);



  while (true)
  {
	  if (send_client != nullptr)
	  {
		  send_client->run(UV_RUN_NOWAIT);
	  }
	  

	  if (send_client != nullptr && (send_client->getStatus() &
		  VTCP_WORKER_STATUS::VTCP_WORKER_STATUS_CLOSED) > 0) {

		  send_client->setData(nullptr);
		  send_client->getVTcp()->readStop();
		  delete send_client;
		  send_client = nullptr;
		  send_tcp_closed = true;
	  }
	  
	  if (recv_client != nullptr)
	  {
		  recv_client->run(UV_RUN_NOWAIT);
	  }
	  if (recv_client != nullptr && (recv_client->getStatus() &
		  VTCP_WORKER_STATUS::VTCP_WORKER_STATUS_CLOSED) > 0) {

		  recv_client->setData(nullptr);

		  recv_client = nullptr;
		  recv_tcp_closed = true;
	  }

	  if (!send_tcp_closed && recv_client == nullptr && send_client != nullptr)
	  {
		  send_client->getVTcp()->readStop();
		  send_client->getVTcp()->close();
		  send_client->close();
		  
		  send_tcp_closed = true;
	  }
	  else if (!recv_tcp_closed && recv_client != nullptr && send_client == nullptr)
	  {
		  recv_client->getVTcp()->readStop();
		  recv_client->getVTcp()->close();
		  tcpServer.closeClient(recv_client);
		  recv_tcp_closed = true;
	  }
	  else if (recv_client == nullptr && send_client == nullptr)
	  {
		  return;
	  }
  }
 
}

void printUsage(const char* progName) {
	std::cout << "Usage: " << progName << " <listen_ip> <listen_port> <forward_ip> <forward_port>\n";
	std::cout << "Example: " << progName << " 0.0.0.0 8075 192.168.1.100 8080\n";
}

bool isValidIp(const std::string& ip) {
	// 简单验证IP地址格式（你可以根据需要扩展验证）
	unsigned int a, b, c, d;
	return sscanf(ip.c_str(), "%u.%u.%u.%u", &a, &b, &c, &d) == 4 &&
		a <= 255 && b <= 255 && c <= 255 && d <= 255;
}

int main(int argc, char* argv[]) {

	try {
		// 参数格式检查
		if (argc != 5) {
			throw std::invalid_argument("Invalid number of arguments.");
		}

		listenIp = argv[1];
		listenPort = std::stoi(argv[2]);
		forwardIp = argv[3];
		forwardPort = std::stoi(argv[4]);

		// 验证 IP 地址格式
		if (!isValidIp(listenIp)) {
			throw std::invalid_argument("Invalid listen IP address.");
		}
		if (!isValidIp(forwardIp)) {
			throw std::invalid_argument("Invalid forward IP address.");
		}

		// 验证端口号
		if (listenPort < 1 || listenPort > 65535 || forwardPort < 1 || forwardPort > 65535) {
			throw std::invalid_argument("Port numbers must be between 1 and 65535.");
		}

	}
	catch (const std::invalid_argument& e) {
		// 捕获无效参数的异常，输出错误并给出正确的用法
		std::cerr << "Error: " << e.what() << "\n";
		printUsage(argv[0]);
		return 1;
	}

  Log->setLogTypes(VLOGGER_TYPE::VLOGGER_TYPE_NO_DEBUG);
  Log->setEnable(true);
  Log->setCloseFile(true);
  Log->setFastLog(true);
  tcpServer.setCloseCb(tcpServer_close);
  tcpServer.setNewClientCb(newClient);

  VThread td;
  td.start(
      [&](void* data) {
	  Log->logInfo("listenIpv4:%s port:%d\n\n", listenIp.c_str(), listenPort);
		tcpServer.listenIpv4(listenIp.c_str(), listenPort, 0);
        tcpServer.run();
      },
      nullptr);

  while (true) {
	  //std::cout << "\033[2J\033[1;1H"; // ANSI escape code to clear screen
   // Log->logInfo("new client  curruntClient:%lld userMaxIndex:%lld maxClient:%lld\n",
   //        tcpServer_index, tcpServer_userMaxIndex, tcpServer_maxIndex);
   // Log->logInfo("new client  readIndex:%lld writeIndex:%lld\n\n",
   //        tcpServer_readIndex, tcpServer_writeIndex);

   //VThreadPool::Statistics info = tcpServer.getVThreadPool()->getStatistics();
   // Log->logInfo("idleThreads:%ld\n", info.idleThreads.load());
   //Log->logInfo("numThreads:%ld\n", info.numThreads.load());
   // Log->logInfo("taskQueueSize:%ld\n", info.taskQueueSize.load());
   //Log->logInfo("closedThreads:%ld\n", info.closedThreads.load());
   //Log->logInfo("workingThreads:%ld\n", info.workingThreads.load());
   // Log->logInfo("workedNumber:%ld\n", info.workedNumber.load());
  

    
    

    std::this_thread::sleep_for(std::chrono::milliseconds(1000));
  }
  td.join();

  return 0;
}
